Struct routing::XorName
[−]
[src]
pub struct XorName(pub [u8; 32]);
A XOR_NAME_BITS
-bit number, viewed as a point in XOR space.
This wraps an array of XOR_NAME_LEN
bytes, i. e. a number
between 0 and 2XOR_NAME_BITS
- 1.
XOR space is the space of these numbers, with the XOR metric as a notion of distance,
i. e. the points with IDs x
and y
are considered to have distance x xor y
.
Methods
impl XorName
[src]
fn to_hex(&self) -> String
Hex-encode the XorName
as a String
.
fn count_differing_bits(&self, other: &XorName) -> u32
Returns the number of bits in which self
differs from other
.
fn from_hex(s: &str) -> Result<XorName, XorNameFromHexError>
Hex-decode a XorName
from a &str
.
fn closer(&self, lhs: &XorName, rhs: &XorName) -> bool
Returns true if lhs
is closer to self
than rhs
.
Equivalently, this returns true
if in the most significant bit where lhs
and rhs
disagree, lhs
agrees with self
.
fn closer_or_equal(&self, lhs: &XorName, rhs: &XorName) -> bool
Returns true if lhs
is closer to self
than rhs
, or lhs == rhs
.
Trait Implementations
impl Eq for XorName
[src]
impl Copy for XorName
[src]
impl Clone for XorName
[src]
fn clone(&self) -> XorName
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl Default for XorName
[src]
impl Hash for XorName
[src]
fn hash<__H: Hasher>(&self, __arg_0: &mut __H)
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl Ord for XorName
[src]
fn cmp(&self, __arg_0: &XorName) -> Ordering
This method returns an Ordering
between self
and other
. Read more
fn max(self, other: Self) -> Self
ord_max_min
)Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
ord_max_min
)Compares and returns the minimum of two values. Read more
impl PartialEq for XorName
[src]
fn eq(&self, __arg_0: &XorName) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &XorName) -> bool
This method tests for !=
.
impl PartialOrd for XorName
[src]
fn partial_cmp(&self, __arg_0: &XorName) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
fn lt(&self, __arg_0: &XorName) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
fn le(&self, __arg_0: &XorName) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
fn gt(&self, __arg_0: &XorName) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
fn ge(&self, __arg_0: &XorName) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl Xorable for XorName
[src]
fn common_prefix(&self, other: &XorName) -> usize
Returns the length of the common prefix with the other
name; e. g. the when other = 11110000
and self = 11111111
this is 4. Read more
fn cmp_distance(&self, lhs: &XorName, rhs: &XorName) -> Ordering
Compares the distance of the arguments to self
. Returns Less
if lhs
is closer, Greater
if rhs
is closer, and Equal
if lhs == rhs
. (The XOR distance can only be equal if the arguments are equal.) Read more
fn bit(&self, i: usize) -> bool
Returns true
if the i
-th bit is 1
.
fn differs_in_bit(&self, name: &XorName, i: usize) -> bool
Returns true
if the i
-th bit of other has a different value to the i
-th bit of self
.
fn with_flipped_bit(self, i: usize) -> XorName
Returns a copy of self
, with the index
-th bit flipped. Read more
fn with_bit(self, i: usize, bit: bool) -> Self
Returns a copy of self
, with the index
-th bit set to bit
. Read more
fn binary(&self) -> String
Returns a binary format string, with leading zero bits included.
fn debug_binary(&self) -> String
Returns a binary debug format string of ????????...????????
fn set_remaining(self, n: usize, val: bool) -> Self
Returns a copy of self with first n
bits preserved, and remaining bits set to 0 (val == false) or 1 (val == true). Read more
fn from_hash<T: AsRef<[u8]>>(hash: T) -> Self
Returns a Self
instance constructed from an array of bytes.
fn bit_len() -> usize
Returns the number of bits in Self
.
impl Debug for XorName
[src]
impl Display for XorName
[src]
fn fmt(&self, formatter: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Binary for XorName
[src]
impl Rand for XorName
[src]
fn rand<R: Rng>(rng: &mut R) -> XorName
Generates a random instance of this type using the specified source of randomness. Read more
impl Index<Range<usize>> for XorName
[src]
type Output = [u8]
The returned type after indexing
fn index(&self, index: Range<usize>) -> &[u8]
The method for the indexing (container[index]
) operation
impl Index<RangeTo<usize>> for XorName
[src]
type Output = [u8]
The returned type after indexing
fn index(&self, index: RangeTo<usize>) -> &[u8]
The method for the indexing (container[index]
) operation
impl Index<RangeFrom<usize>> for XorName
[src]
type Output = [u8]
The returned type after indexing
fn index(&self, index: RangeFrom<usize>) -> &[u8]
The method for the indexing (container[index]
) operation
impl Index<RangeFull> for XorName
[src]
type Output = [u8]
The returned type after indexing
fn index(&self, index: RangeFull) -> &[u8]
The method for the indexing (container[index]
) operation
impl Not for XorName
[src]
type Output = XorName
The resulting type after applying the !
operator
fn not(self) -> XorName
The method for the unary !
operator
impl Sub for XorName
[src]
type Output = XorName
The resulting type after applying the -
operator
fn sub(self, rhs: XorName) -> Self::Output
The method for the -
operator
impl<'a> Sub for &'a XorName
[src]
type Output = XorName
The resulting type after applying the -
operator
fn sub(self, rhs: &XorName) -> Self::Output
The method for the -
operator
impl Div<u32> for XorName
[src]
type Output = XorName
The resulting type after applying the /
operator
fn div(self, rhs: u32) -> Self::Output
The method for the /
operator