Trait subtle::ConditionallyAssignable
[−]
[src]
pub trait ConditionallyAssignable { fn conditional_assign(&mut self, other: &Self, choice: Mask); }
Trait for items which can be conditionally assigned in constant time.
Required Methods
fn conditional_assign(&mut self, other: &Self, choice: Mask)
Conditionally assign other
to self
in constant time.
If choice == 1
, assign other
to self
. Otherwise, leave self
unchanged.
Examples
Several implementations of constant-time conditional assignment are
provided within subtle
.
Integer Types
This crate includes implementations of ConditionallyAssignable
for the
following integer types:
u8
,u16
,u32
,u64
,i8
,i16
,i32
, andi64
.
let mut x: u8 = 13; let y: u8 = 42; x.conditional_assign(&y, 0); assert_eq!(x, 13); x.conditional_assign(&y, 1); assert_eq!(x, 42);
If you need conditional assignment for u128
ori128
on Rust nightly,
these definitions are provided if you compile subtle
with the
nightly
feature:
[dependencies.subtle] features = ["nightly"]
Integer Arrays
Additionally, subtle
provides implementations of conditional
assignment for fixed-size arrays (between [1, 32] elements in length,
inclusive) of integers (for the integer types listed above):
let mut x: [u32; 17] = [13; 17]; let y: [u32; 17] = [42; 17]; x.conditional_assign(&y, 0); assert_eq!(x, [13; 17]); x.conditional_assign(&y, 1); assert_eq!(x, [42; 17]);
If you need conditional assignment for u128
ori128
on Rust nightly,
these definitions are provided if you compile subtle
with the
nightly
feature (as above).
Implementors
impl ConditionallyAssignable for u8
impl ConditionallyAssignable for u16
impl ConditionallyAssignable for u32
impl ConditionallyAssignable for u64
impl ConditionallyAssignable for i8
impl ConditionallyAssignable for i16
impl ConditionallyAssignable for i32
impl ConditionallyAssignable for i64
impl ConditionallyAssignable for [u8; 1]
impl ConditionallyAssignable for [u8; 2]
impl ConditionallyAssignable for [u8; 3]
impl ConditionallyAssignable for [u8; 4]
impl ConditionallyAssignable for [u8; 5]
impl ConditionallyAssignable for [u8; 6]
impl ConditionallyAssignable for [u8; 7]
impl ConditionallyAssignable for [u8; 8]
impl ConditionallyAssignable for [u8; 9]
impl ConditionallyAssignable for [u8; 10]
impl ConditionallyAssignable for [u8; 11]
impl ConditionallyAssignable for [u8; 12]
impl ConditionallyAssignable for [u8; 13]
impl ConditionallyAssignable for [u8; 14]
impl ConditionallyAssignable for [u8; 15]
impl ConditionallyAssignable for [u8; 16]
impl ConditionallyAssignable for [u8; 17]
impl ConditionallyAssignable for [u8; 18]
impl ConditionallyAssignable for [u8; 19]
impl ConditionallyAssignable for [u8; 20]
impl ConditionallyAssignable for [u8; 21]
impl ConditionallyAssignable for [u8; 22]
impl ConditionallyAssignable for [u8; 23]
impl ConditionallyAssignable for [u8; 24]
impl ConditionallyAssignable for [u8; 25]
impl ConditionallyAssignable for [u8; 26]
impl ConditionallyAssignable for [u8; 27]
impl ConditionallyAssignable for [u8; 28]
impl ConditionallyAssignable for [u8; 29]
impl ConditionallyAssignable for [u8; 30]
impl ConditionallyAssignable for [u8; 31]
impl ConditionallyAssignable for [u8; 32]
impl ConditionallyAssignable for [u16; 1]
impl ConditionallyAssignable for [u16; 2]
impl ConditionallyAssignable for [u16; 3]
impl ConditionallyAssignable for [u16; 4]
impl ConditionallyAssignable for [u16; 5]
impl ConditionallyAssignable for [u16; 6]
impl ConditionallyAssignable for [u16; 7]
impl ConditionallyAssignable for [u16; 8]
impl ConditionallyAssignable for [u16; 9]
impl ConditionallyAssignable for [u16; 10]
impl ConditionallyAssignable for [u16; 11]
impl ConditionallyAssignable for [u16; 12]
impl ConditionallyAssignable for [u16; 13]
impl ConditionallyAssignable for [u16; 14]
impl ConditionallyAssignable for [u16; 15]
impl ConditionallyAssignable for [u16; 16]
impl ConditionallyAssignable for [u16; 17]
impl ConditionallyAssignable for [u16; 18]
impl ConditionallyAssignable for [u16; 19]
impl ConditionallyAssignable for [u16; 20]
impl ConditionallyAssignable for [u16; 21]
impl ConditionallyAssignable for [u16; 22]
impl ConditionallyAssignable for [u16; 23]
impl ConditionallyAssignable for [u16; 24]
impl ConditionallyAssignable for [u16; 25]
impl ConditionallyAssignable for [u16; 26]
impl ConditionallyAssignable for [u16; 27]
impl ConditionallyAssignable for [u16; 28]
impl ConditionallyAssignable for [u16; 29]
impl ConditionallyAssignable for [u16; 30]
impl ConditionallyAssignable for [u16; 31]
impl ConditionallyAssignable for [u16; 32]
impl ConditionallyAssignable for [u32; 1]
impl ConditionallyAssignable for [u32; 2]
impl ConditionallyAssignable for [u32; 3]
impl ConditionallyAssignable for [u32; 4]
impl ConditionallyAssignable for [u32; 5]
impl ConditionallyAssignable for [u32; 6]
impl ConditionallyAssignable for [u32; 7]
impl ConditionallyAssignable for [u32; 8]
impl ConditionallyAssignable for [u32; 9]
impl ConditionallyAssignable for [u32; 10]
impl ConditionallyAssignable for [u32; 11]
impl ConditionallyAssignable for [u32; 12]
impl ConditionallyAssignable for [u32; 13]
impl ConditionallyAssignable for [u32; 14]
impl ConditionallyAssignable for [u32; 15]
impl ConditionallyAssignable for [u32; 16]
impl ConditionallyAssignable for [u32; 17]
impl ConditionallyAssignable for [u32; 18]
impl ConditionallyAssignable for [u32; 19]
impl ConditionallyAssignable for [u32; 20]
impl ConditionallyAssignable for [u32; 21]
impl ConditionallyAssignable for [u32; 22]
impl ConditionallyAssignable for [u32; 23]
impl ConditionallyAssignable for [u32; 24]
impl ConditionallyAssignable for [u32; 25]
impl ConditionallyAssignable for [u32; 26]
impl ConditionallyAssignable for [u32; 27]
impl ConditionallyAssignable for [u32; 28]
impl ConditionallyAssignable for [u32; 29]
impl ConditionallyAssignable for [u32; 30]
impl ConditionallyAssignable for [u32; 31]
impl ConditionallyAssignable for [u32; 32]
impl ConditionallyAssignable for [u64; 1]
impl ConditionallyAssignable for [u64; 2]
impl ConditionallyAssignable for [u64; 3]
impl ConditionallyAssignable for [u64; 4]
impl ConditionallyAssignable for [u64; 5]
impl ConditionallyAssignable for [u64; 6]
impl ConditionallyAssignable for [u64; 7]
impl ConditionallyAssignable for [u64; 8]
impl ConditionallyAssignable for [u64; 9]
impl ConditionallyAssignable for [u64; 10]
impl ConditionallyAssignable for [u64; 11]
impl ConditionallyAssignable for [u64; 12]
impl ConditionallyAssignable for [u64; 13]
impl ConditionallyAssignable for [u64; 14]
impl ConditionallyAssignable for [u64; 15]
impl ConditionallyAssignable for [u64; 16]
impl ConditionallyAssignable for [u64; 17]
impl ConditionallyAssignable for [u64; 18]
impl ConditionallyAssignable for [u64; 19]
impl ConditionallyAssignable for [u64; 20]
impl ConditionallyAssignable for [u64; 21]
impl ConditionallyAssignable for [u64; 22]
impl ConditionallyAssignable for [u64; 23]
impl ConditionallyAssignable for [u64; 24]
impl ConditionallyAssignable for [u64; 25]
impl ConditionallyAssignable for [u64; 26]
impl ConditionallyAssignable for [u64; 27]
impl ConditionallyAssignable for [u64; 28]
impl ConditionallyAssignable for [u64; 29]
impl ConditionallyAssignable for [u64; 30]
impl ConditionallyAssignable for [u64; 31]
impl ConditionallyAssignable for [u64; 32]