Как вы модифицируете байты в `Hash` в субстрате четности? - PullRequest
0 голосов
/ 14 января 2019

Учитывая некоторое значение Hash, которое генерируется во время выполнения субстрата, как мне изменить или получить доступ к отдельным байтам этого хэша?

1 Ответ

0 голосов
/ 14 января 2019

Черта Hash Output имеет черты AsRef и AsMut, которые позволяют вам взаимодействовать с хешем как байтовым сликом ([u8]):

pub trait Hash: 'static + MaybeSerializeDebug + Clone + Eq + PartialEq {
    type Output: Member + MaybeSerializeDebug + AsRef<[u8]> + AsMut<[u8]>;

    // ... removed for brevity
}

Использование as_ref() или as_mut() в хэше вернет фрагмент байтов, который вы можете использовать как обычно:

Например:

// Iterate over a hash
let hash1 = <T as system::Trait>::Hashing::hash(1);
for hash_byte in hash1.as_ref().iter() {
    // ... do something
}

или

// Add one to the first byte of a hash
let mut hash2 = <T as system::Trait>::Hashing::hash(2);
hash2.as_mut()[0] += 1;
...