pub struct DynToken { /* private fields */ }Expand description
A signed magnitude integer used as both a hash output and a ring coordinate.
§Examples
use dynomite::hashkit::DynToken;
let mut t = DynToken::from_u32(7);
assert_eq!(t.get_int(), 7);
assert_eq!(t.len(), 1);Implementations§
Source§impl DynToken
impl DynToken
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct an empty token (sign zero, no magnitude words).
§Examples
use dynomite::hashkit::DynToken;
let t = DynToken::new();
assert!(t.is_empty());Sourcepub fn from_u32(value: u32) -> Self
pub fn from_u32(value: u32) -> Self
Construct a token holding a single 32-bit value.
§Examples
use dynomite::hashkit::DynToken;
let t = DynToken::from_u32(7);
assert_eq!(t.get_int(), 7);Sourcepub fn size(&mut self, len: usize) -> Result<(), DynError>
pub fn size(&mut self, len: usize) -> Result<(), DynError>
Set the number of magnitude words. Returns an error if len
exceeds TOKEN_WORD_CAPACITY.
§Examples
use dynomite::hashkit::DynToken;
let mut t = DynToken::default();
assert!(t.size(2).is_ok());
assert!(t.size(99).is_err());Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Number of magnitude words currently in use.
§Examples
use dynomite::hashkit::DynToken;
assert_eq!(DynToken::from_u32(1).len(), 1);
assert_eq!(DynToken::default().len(), 0);Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Whether the token holds no magnitude words.
§Examples
use dynomite::hashkit::DynToken;
assert!(DynToken::default().is_empty());
assert!(!DynToken::from_u32(1).is_empty());Sourcepub fn sign(&self) -> Sign
pub fn sign(&self) -> Sign
Sign field.
§Examples
use dynomite::hashkit::DynToken;
use dynomite::hashkit::token::Sign;
assert_eq!(DynToken::from_u32(1).sign(), Sign::Positive);
assert_eq!(DynToken::default().sign(), Sign::Zero);Sourcepub fn mag(&self) -> &[u32]
pub fn mag(&self) -> &[u32]
Read-only view of the magnitude words actually in use.
§Examples
use dynomite::hashkit::DynToken;
let t = DynToken::from_u32(0xdead);
assert_eq!(t.mag(), &[0xdead]);Sourcepub fn mag_mut(&mut self) -> &mut [u32; 4]
pub fn mag_mut(&mut self) -> &mut [u32; 4]
Mutable access to the full magnitude buffer (capacity-sized).
§Examples
use dynomite::hashkit::DynToken;
use dynomite::hashkit::token::TOKEN_WORD_CAPACITY;
let mut t = DynToken::default();
t.size(2).unwrap();
t.mag_mut()[0] = 1;
assert_eq!(t.mag_mut().len(), TOKEN_WORD_CAPACITY);Sourcepub fn set_len_keep(&mut self, len: usize)
pub fn set_len_keep(&mut self, len: usize)
Force the length without resetting the sign or zeroing words.
§Examples
use dynomite::hashkit::DynToken;
let mut t = DynToken::default();
t.mag_mut()[0] = 0xaa;
t.set_len_keep(1);
assert_eq!(t.len(), 1);
assert_eq!(t.get_int(), 0xaa);Sourcepub fn set_sign(&mut self, sign: Sign)
pub fn set_sign(&mut self, sign: Sign)
Sets sign explicitly. Mostly useful in tests.
§Examples
use dynomite::hashkit::DynToken;
use dynomite::hashkit::token::Sign;
let mut t = DynToken::from_u32(1);
t.set_sign(Sign::Negative);
assert_eq!(t.sign(), Sign::Negative);Sourcepub fn set_int(&mut self, val: u32)
pub fn set_int(&mut self, val: u32)
Set the token to a single 32-bit value.
Sign becomes Positive when val > 0, Zero otherwise. Length
is forced to 1.
§Examples
use dynomite::hashkit::DynToken;
let mut t = DynToken::default();
t.size(1).unwrap();
t.set_int(99);
assert_eq!(t.get_int(), 99);Trait Implementations§
Source§impl Ord for DynToken
impl Ord for DynToken
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialOrd for DynToken
impl PartialOrd for DynToken
impl Eq for DynToken
Auto Trait Implementations§
impl Freeze for DynToken
impl RefUnwindSafe for DynToken
impl Send for DynToken
impl Sync for DynToken
impl Unpin for DynToken
impl UnsafeUnpin for DynToken
impl UnwindSafe for DynToken
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.