Key

Trait Key 

Source
pub trait Key:
    Copy
    + Default
    + Ord
    + 'static {
    // Required methods
    fn split<C: Chunk>(self) -> (Self, u32);
    fn merge<C: Chunk>(self, bit: u32) -> Self;
}
Expand description

Required Methods§

Source

fn split<C: Chunk>(self) -> (Self, u32)

拆开键的高、低位

低位必须小于 C::BITS

let key = 114514;
let (_, lo) = key.split::<u64>();
assert!(lo < u64::BITS);

原先大小如何,拆开后依然不变:

let k1 = 114514;
let k2 = 1919810;
assert_eq!(k1.cmp(&k2), k1.split::<u64>().cmp(&k2.split::<u64>()));
Source

fn merge<C: Chunk>(self, bit: u32) -> Self

合并键的高、低位

怎么拆的就怎么合并回去:

let key = 114514;
let (hi, lo) = key.split::<u64>();
assert_eq!(key, hi.merge::<u64>(lo));

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Key for i8

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for i16

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for i32

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for i64

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for i128

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for isize

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for u8

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for u16

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for u32

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for u64

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for u128

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Source§

impl Key for usize

Source§

fn merge<C: Chunk>(self, bit: u32) -> Self

Source§

fn split<C: Chunk>(self) -> (Self, u32)

Implementors§