Crates.io | tetsy-fixed-hash |
lib.rs | tetsy-fixed-hash |
version | 0.7.1 |
source | src |
created_at | 2021-02-18 12:50:49.721598 |
updated_at | 2021-06-08 02:04:51.641103 |
description | Macros to define custom tetsy-fixed-size hash types |
homepage | https://github.com/tetcoin/tetsy-common |
repository | https://github.com/tetcoin/tetsy-common |
max_upload_size | |
id | 357019 |
size | 41,147 |
Provides macros to construct custom fixed-size hash types.
Simple 256 bit (32 bytes) hash type.
use tetsy_fixed_hash::construct_fixed_hash;
construct_fixed_hash! {
/// My 256 bit hash type.
pub struct H256(32);
}
Opt-in to add conversions between differently sized hashes.
construct_fixed_hash!{ struct H256(32); }
construct_fixed_hash!{ struct H160(20); }
// auto-implement conversions between H256 and H160
impl_fixed_hash_conversions!(H256, H160);
// now use the generated conversions
assert_eq!(H256::from(H160::zero()), H256::zero());
assert_eq!(H160::from(H256::zero()), H160::zero());
It is possible to add attributes to your types, for example to make them serializable.
construct_fixed_hash!{
/// My serializable hash type.
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
struct H160(20);
}
By default this is an standard library depending crate.
For a #[no_std]
environment use it as follows:
tetsy-fixed-hash = { version = "0.3", default-features = false }
std
: Use the standard library instead of the core library.
rustc-hex/std
rand/std
byteorder/std
libc
: Use libc
for implementations of PartialEq
and Ord
.
rand
: Provide API based on the rand
crate.
byteorder
: Provide API based on the byteorder
crate.
quickcheck
: Provide quickcheck
implementation for hash types.
api-dummy
: Generate a dummy hash type for API documentation.
docs.rs
arbitrary
: Allow for creation of a hash from random unstructured input.