#[repr(C)]pub struct InnerNode {
pub tag: u8,
pub padding: [u8; 3],
pub prefix_len: u32,
pub key: u128,
pub children: [NodeHandle; 2],
pub child_earliest_expiry: [u64; 2],
pub reserved: [u8; 72],
}
Expand description
InnerNodes and LeafNodes compose the binary tree of orders.
Each InnerNode has exactly two children, which are either InnerNodes themselves,
or LeafNodes. The children share the top prefix_len
bits of key
. The left
child has a 0 in the next bit, and the right a 1.
Fields§
§tag: u8
§padding: [u8; 3]
§prefix_len: u32
number of highest key
bits that all children share
e.g. if it’s 2, the two highest bits of key
will be the same on all children
key: u128
only the top prefix_len
bits of key
are relevant
children: [NodeHandle; 2]
indexes into BookSide::nodes
child_earliest_expiry: [u64; 2]
The earliest expiry timestamp for the left and right subtrees.
Needed to be able to find and remove expired orders without having to iterate through the whole bookside.
reserved: [u8; 72]
Implementations§
Trait Implementations§
source§impl BorshDeserialize for InnerNodewhere
u8: BorshDeserialize,
[u8; 3]: BorshDeserialize,
u32: BorshDeserialize,
u128: BorshDeserialize,
[NodeHandle; 2]: BorshDeserialize,
[u64; 2]: BorshDeserialize,
[u8; 72]: BorshDeserialize,
impl BorshDeserialize for InnerNodewhere u8: BorshDeserialize, [u8; 3]: BorshDeserialize, u32: BorshDeserialize, u128: BorshDeserialize, [NodeHandle; 2]: BorshDeserialize, [u64; 2]: BorshDeserialize, [u8; 72]: BorshDeserialize,
source§impl BorshSerialize for InnerNodewhere
u8: BorshSerialize,
[u8; 3]: BorshSerialize,
u32: BorshSerialize,
u128: BorshSerialize,
[NodeHandle; 2]: BorshSerialize,
[u64; 2]: BorshSerialize,
[u8; 72]: BorshSerialize,
impl BorshSerialize for InnerNodewhere u8: BorshSerialize, [u8; 3]: BorshSerialize, u32: BorshSerialize, u128: BorshSerialize, [NodeHandle; 2]: BorshSerialize, [u64; 2]: BorshSerialize, [u8; 72]: BorshSerialize,
impl Copy for InnerNode
impl Pod for InnerNode
Auto Trait Implementations§
impl RefUnwindSafe for InnerNode
impl Send for InnerNode
impl Sync for InnerNode
impl Unpin for InnerNode
impl UnwindSafe for InnerNode
Blanket Implementations§
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
Casts the value.
§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere T: AnyBitPattern,
§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret
bits
as &Self
.source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
Casts the value.
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
Casts the value.
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere T: UnwrappedCast<Dst>,
Casts the value.
source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere Src: UnwrappedCast<Dst>,
source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere T: WrappingCast<Dst>,
Casts the value.
source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere Src: WrappingCast<Dst>,
source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.