Skip to main content

HnswIndex

Struct HnswIndex 

Source
pub struct HnswIndex { /* private fields */ }
Expand description

Hierarchical Navigable Small World graph index.

  • FP32 construction for structural integrity
  • Heuristic neighbor selection (Algorithm 4)
  • Beam search with configurable ef parameter

Implementations§

Source§

impl HnswIndex

Source

pub fn hnsw_neighbors_layer0(&self, node_id: u32) -> Vec<u32>

Return the layer-0 neighbor list of node_id, or an empty slice if the node does not exist or has no layer-0 neighbors.

Used by LirePatcher for local topology-drift estimation.

Source§

impl HnswIndex

Source

pub fn insert(&mut self, vector: Vec<f32>) -> Result<(), VectorError>

Insert a vector into the index.

  1. Assign a random layer using the exponential distribution
  2. Greedily descend from the entry point to the new node’s layer + 1
  3. At each layer from the node’s layer down to 0, search for nearest neighbors, select via the diversity heuristic, and add bidirectional edges
  4. Prune over-connected nodes to maintain the M/M0 invariant
Source§

impl HnswIndex

Source

pub fn graph_checkpoint_to_bytes(&self) -> Result<Vec<u8>, VectorError>

Serialize ONLY the graph topology (neighbors, entry point, params) to rkyv bytes. Vector data is intentionally omitted — node_vectors is filled with empty Vec<f32> placeholders.

Pair with [Self::from_graph_checkpoint] on restore. The same RKHNS\0 magic and version byte are used so from_checkpoint can decode the bytes, but the resulting index has empty node storage.

This is the Lite pagedb-segment write path: vectors live in the segment, graph topology lives in the B+ tree. Origin never calls this method.

Source

pub fn checkpoint_to_bytes(&self) -> Result<Vec<u8>, VectorError>

Serialize the index to rkyv bytes (with magic header) for storage.

Magic header RKHNS\0 allows from_checkpoint to detect format.

Source

pub fn from_checkpoint(bytes: &[u8]) -> Result<Option<HnswIndex>, VectorError>

Restore an index from a checkpoint snapshot.

Returns:

  • Ok(Some(index)) — successfully decoded (rkyv format).
  • Ok(None) — bytes do not start with the RKHNS\0 magic header.
  • Err(VectorError::UnsupportedVersion) — magic matches RKHNS\0 but the version byte is not HNSW_FORMAT_VERSION; the caller must reject the buffer.
  • Err(VectorError::CheckpointDeserializationError) — magic and version matched but the rkyv payload itself failed to decode (structurally corrupt checkpoint).
Source§

impl HnswIndex

Source

pub fn with_backing( &mut self, b: Arc<dyn VectorSegmentBacking>, ) -> Result<&mut HnswIndex, VectorError>

Attach a crate::segment_backing::VectorSegmentBacking to this index.

After this succeeds, dist_to_node falls back to the backing whenever an F32 node’s local vector storage is empty. This is used by Lite’s graph-checkpoint-only restore path: the graph topology is loaded from the B+ tree blob, but vector data lives in a pagedb segment.

Origin never calls this — its node arenas are always populated.

§Errors

The backing is validated against this index BEFORE being attached, and is not attached at all when it cannot serve every node whose local storage is empty. An attached-but-unserviceable backing is the worst outcome available: the graph looks healthy, so search proceeds and then finds no vector for a node it must score. Callers should treat an error as “this segment is unusable — rebuild the index from the authoritative vectors, or leave the collection unloaded”, never as something to ignore.

Source§

impl HnswIndex

Source

pub fn compact(&mut self) -> usize

Compact the index by removing all tombstoned nodes.

Returns the number of removed nodes. See compact_with_map for the variant that also returns the old→new id remapping.

Source

pub fn compact_with_map(&mut self) -> (usize, Vec<u32>)

Compact and return both the removed count and the old→new id map.

id_map[old_local] = new_local, or u32::MAX if the node was tombstoned (removed). Repairs edges so the entry point reaches every remaining node.

Source§

impl HnswIndex

Source

pub fn export_neighbors(&self) -> Vec<Vec<Vec<u32>>>

Export all neighbor lists for snapshot transfer.

Source§

impl HnswIndex

Source

pub fn new(dim: usize, params: HnswParams) -> HnswIndex

Create a new empty HNSW index.

Source

pub fn with_seed(dim: usize, params: HnswParams, seed: u64) -> HnswIndex

Create with a specific RNG seed (for deterministic testing).

Source

pub fn metric(&self) -> DistanceMetric

The distance metric this index was built with. Search-time metric overrides must match this; differing metrics require either rebuilding the index or a metric-aware re-rank pass.

Source

pub fn params(&self) -> &HnswParams

Source

pub fn dim(&self) -> usize

Source

pub fn dtype(&self) -> VectorStorageDtype

Storage dtype this index was constructed with.

Source

pub fn entry_point(&self) -> Option<u32>

Source

pub fn max_layer(&self) -> usize

Source

pub fn rng_state(&self) -> u64

Current RNG state (for snapshot reproducibility).

Source

pub fn memory_usage_bytes(&self) -> usize

Approximate memory usage in bytes (vector data + neighbor lists).

Source§

impl HnswIndex

Source

pub fn len(&self) -> usize

Source

pub fn live_count(&self) -> usize

Source

pub fn tombstone_count(&self) -> usize

Source

pub fn tombstone_ratio(&self) -> f64

Tombstone ratio: fraction of nodes that are deleted.

Source

pub fn is_empty(&self) -> bool

Source

pub fn delete(&mut self, id: u32) -> bool

Soft-delete a vector by internal node ID.

Source

pub fn is_deleted(&self, id: u32) -> bool

Source

pub fn undelete(&mut self, id: u32) -> bool

Source§

impl HnswIndex

Source

pub fn get_vector(&self, id: u32) -> Option<&[f32]>

Returns a &[f32] view of the stored vector for node id.

Returns Some only when the index dtype is F32. For F16 or BF16 indexes this method returns None — use Self::get_vector_bytes instead and decode via crate::dtype::cast_to_f32 if an f32 view is needed.

In debug builds, calling this on a non-F32 index triggers a debug_assert! to flag misuse early. In release builds the debug_assert! is a no-op and None is returned silently.

Source

pub fn get_vector_bytes(&self, id: u32) -> Option<&[u8]>

Dtype-agnostic byte view of the stored vector for node id.

Returns None if id is out of range. Pair the returned slice with Self::dtype to interpret the encoding.

Source

pub fn get_vector_or_backing(&self, id: u32) -> Option<Cow<'_, [f32]>>

Returns the stored f32 vector for node id, consulting the pagedb segment backing when the node’s local storage is empty.

This is the rerank-safe accessor. It covers both cases that reading node.storage directly gets wrong:

  • Lite’s graph-checkpoint-only restore path: after from_checkpoint + with_backing, per-node vectors are empty placeholders and the data must be fetched through the backing.
  • A narrower storage dtype (F16/BF16): the node holds encoded bytes, not f32, so the vector is decoded into an owned Cow.

Returns None when id is out of range, or the node has no local vector and no backing supplies one. Decode failure also yields None — callers needing the reason should use Self::materialize_vector.

Only available on non-WASM targets (the backing type requires mmap).

Source

pub fn materialize_vector(&self, id: u32) -> Result<Vec<f32>, VectorError>

Materialize node id’s vector as an owned Vec<f32>, consulting the segment backing when the node’s local storage is empty.

This is the authoritative accessor for every caller that copies vector data out of the index — segment serialization, checkpointing, snapshot export, parameter rebuilds. Reading node.storage directly is wrong on the graph-checkpoint-only restore path, where per-node storage is an empty placeholder and the real data lives in the attached backing.

§Errors
Source

pub fn extract_vectors_and_surrogates( &self, ) -> Result<(Vec<Vec<f32>>, Vec<u64>), VectorError>

Extract all node vectors as owned F32 vecs for segment serialization.

The second tuple element is always empty — HnswIndex has no surrogate map. Surrogates live at the VectorCollection layer in Origin. Lite passes an empty slice so write_vector_segment writes no surrogate block.

§Errors

Propagates Self::materialize_vector for the first node whose vector cannot be materialized. Serializing an empty or partial payload would write a segment whose header declares vectors it does not contain, so this fails loudly instead.

Source

pub fn export_vectors(&self) -> Result<Vec<Vec<f32>>, VectorError>

Export all vectors as F32 for snapshot transfer.

For F32 indexes this is a clone. For F16/BF16 indexes each vector is decoded to F32 on the fly. Nodes whose local storage is empty are read through the attached segment backing.

§Errors

Propagates Self::materialize_vector for the first node whose vector cannot be materialized. A caller copying vectors out of the index cannot use an empty placeholder, so this reports the failure rather than yielding one.

Source§

impl HnswIndex

Source

pub fn search( &self, query: &[f32], k: usize, ef: usize, ) -> Result<Vec<SearchResult>, VectorError>

K-NN search: find the k closest vectors to query.

ef controls the search beam width (higher = better recall, slower). Must be >= k. Typical values: ef = 2k to 10k.

Returns VectorError::DimensionMismatch when query does not have the index dimension.

Source

pub fn search_filtered( &self, query: &[f32], k: usize, ef: usize, filter: &RoaringBitmap, ) -> Result<Vec<SearchResult>, VectorError>

Filtered K-NN search with Roaring bitmap pre-filtering.

Source

pub fn search_filtered_offset( &self, query: &[f32], k: usize, ef: usize, filter: &RoaringBitmap, id_offset: u32, ) -> Result<Vec<SearchResult>, VectorError>

Filtered K-NN search where the bitmap is keyed in a shifted ID space.

id_offset is added to local node IDs before testing filter.contains. Used by multi-segment collections where the bitmap holds GLOBAL ids and each segment’s HNSW nodes are numbered starting at base_id.

Source

pub fn search_with_bitmap_bytes( &self, query: &[f32], k: usize, ef: usize, bitmap_bytes: &[u8], ) -> Result<Vec<SearchResult>, VectorError>

Deserialize a Roaring bitmap from bytes and perform filtered search.

Source

pub fn search_with_bitmap_bytes_offset( &self, query: &[f32], k: usize, ef: usize, bitmap_bytes: &[u8], id_offset: u32, ) -> Result<Vec<SearchResult>, VectorError>

Deserialize a Roaring bitmap and search with an ID offset applied before testing membership. See search_filtered_offset for rationale.

Bytes that do not decode fail with VectorError::InvalidFilterBitmap: an unfiltered search would return rows the filter excludes.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Paint for T
where T: ?Sized,

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more