Merge rust-bitcoin/rust-secp256k1#345: Add a static immutable zero aligned type
5e6d0f1363
Switch to associated constant (Jonathan Underwood)9cf552e240
Add a static immutable zero aligned type (junderw) Pull request description: The `zeroed` fn can not be used in static assignments. In environments where it is no_std and no allocator are present, the only way to get a slice of AlignedTypes is dynamically, so `preallocated_gen_new` can't be used. By offering this as a static, it can be used in static assignments as such: ```rust #[cfg(target_pointer_width = "32")] static mut CONTEXT_BUFFER: [AlignedType; 69645] = [ZERO_ALIGNED; 69645]; #[cfg(target_pointer_width = "64")] static mut CONTEXT_BUFFER: [AlignedType; 69646] = [ZERO_ALIGNED; 69646]; static mut SECP256K1: Option<Secp256k1<AllPreallocated>> = None; pub fn get_context(seed: Option<&[u8; 32]>) -> &'static Secp256k1<AllPreallocated<'static>> { unsafe { if SECP256K1.is_none() { SECP256K1 = Some( Secp256k1::preallocated_gen_new(&mut CONTEXT_BUFFER) .expect("CONTEXT_BUFFER size is wrong"), ); } if let Some(seed) = seed { SECP256K1.as_mut().unwrap().seeded_randomize(seed); } SECP256K1.as_ref().unwrap() } } ``` ACKs for top commit: apoelstra: ACK5e6d0f1363
Tree-SHA512: fc800f8c5c637fc7f81312da17f0a96d17cd087a2e6876f4dedbefffbe92b3625deb93636265f334f9fbd7ac38baa529d4ec72857dae662e26d753f32f91d394
This commit is contained in:
commit
6a893208f8
|
@ -40,6 +40,9 @@ impl AlignedType {
|
||||||
pub fn zeroed() -> Self {
|
pub fn zeroed() -> Self {
|
||||||
AlignedType([0u8; 16])
|
AlignedType([0u8; 16])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A static zeroed out AlignedType for use in static assignments of [AlignedType; _]
|
||||||
|
const ZERO: AlignedType = AlignedType([0u8; 16]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(feature = "std", not(rust_secp_no_symbol_renaming)))]
|
#[cfg(all(feature = "std", not(rust_secp_no_symbol_renaming)))]
|
||||||
|
|
Loading…
Reference in New Issue