pub struct InMemoryGraph { /* private fields */ }Implementations§
Source§impl InMemoryGraph
impl InMemoryGraph
pub fn new() -> InMemoryGraph
Sourcepub fn with_capacity_hint(_nodes: usize, _relationships: usize) -> InMemoryGraph
pub fn with_capacity_hint(_nodes: usize, _relationships: usize) -> InMemoryGraph
Kept for API compatibility. The chunked storage allocates full chunks as the graph grows, so there is no repeated doubling for a capacity hint to avoid.
pub fn contains_node(&self, node_id: u64) -> bool
pub fn contains_relationship(&self, rel_id: u64) -> bool
Sourcepub fn set_mutation_recorder(
&mut self,
recorder: Option<Arc<dyn MutationRecorder>>,
)
pub fn set_mutation_recorder( &mut self, recorder: Option<Arc<dyn MutationRecorder>>, )
Install (or clear) the mutation recorder. Passing None detaches any
currently-installed recorder. The recorder observes every committed
mutation after it has been applied.
Sourcepub fn set_deleted_record_sink(
&mut self,
sink: Option<Arc<dyn DeletedRecordSink>>,
)
pub fn set_deleted_record_sink( &mut self, sink: Option<Arc<dyn DeletedRecordSink>>, )
Install (or clear) the DeletedRecordSink.
Sourcepub fn mutation_recorder(&self) -> Option<&Arc<dyn MutationRecorder>>
pub fn mutation_recorder(&self) -> Option<&Arc<dyn MutationRecorder>>
Handle to the currently-installed recorder, if any.
Sourcepub fn graph_stats(&self) -> GraphStats
pub fn graph_stats(&self) -> GraphStats
Snapshot of cardinality stats. Cheap: derived from already-tracked
nodes_by_label / relationships_by_type lengths and the active
property-index buckets. The cost model uses this to populate
estimated_rows on plan-tree nodes.
Sourcepub fn memory_estimate(&self) -> MemoryReport
pub fn memory_estimate(&self) -> MemoryReport
Approximate retained-heap breakdown of this graph. See
super::MemoryReport for the methodology and per-component
fields. Intended for benches and the mem_probe* examples;
not on a hot path.
Source§impl InMemoryGraph
impl InMemoryGraph
Sourcepub fn snapshot_payload(&self) -> SnapshotPayload
pub fn snapshot_payload(&self) -> SnapshotPayload
Return the portable graph-state payload. Callers downstream of
lora-store (typically lora-database) feed this into
lora-snapshot for byte-level encoding.
Sourcepub fn load_snapshot_payload(
&mut self,
payload: SnapshotPayload,
) -> Result<SnapshotMeta, SnapshotError>
pub fn load_snapshot_payload( &mut self, payload: SnapshotPayload, ) -> Result<SnapshotMeta, SnapshotError>
Replace the graph from a portable graph-state payload, preserving the currently installed mutation recorder across the swap.
Trait Implementations§
Source§impl BorrowedGraphStorage for InMemoryGraph
impl BorrowedGraphStorage for InMemoryGraph
fn node_ref(&self, id: u64) -> Option<&NodeRecord>
fn relationship_ref(&self, id: u64) -> Option<&RelationshipRecord>
fn node_refs(&self) -> Box<dyn Iterator<Item = &NodeRecord> + '_>
fn node_refs_by_label( &self, label: &str, ) -> Box<dyn Iterator<Item = &NodeRecord> + '_>
fn relationship_refs( &self, ) -> Box<dyn Iterator<Item = &RelationshipRecord> + '_>
fn relationship_refs_by_type( &self, rel_type: &str, ) -> Box<dyn Iterator<Item = &RelationshipRecord> + '_>
Source§impl Clone for InMemoryGraph
impl Clone for InMemoryGraph
Source§fn clone(&self) -> InMemoryGraph
fn clone(&self) -> InMemoryGraph
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InMemoryGraph
impl Debug for InMemoryGraph
Source§impl Default for InMemoryGraph
impl Default for InMemoryGraph
Source§fn default() -> InMemoryGraph
fn default() -> InMemoryGraph
Source§impl GraphStorage for InMemoryGraph
impl GraphStorage for InMemoryGraph
fn list_indexes(&self) -> Vec<IndexDefinition>
fn get_index(&self, name: &str) -> Option<IndexDefinition>
Source§fn fulltext_search(&self, name: &str, query: &str) -> Vec<(u64, f64)>
fn fulltext_search(&self, name: &str, query: &str) -> Vec<(u64, f64)>
(entity_id, score) pairs sorted descending by score. Backends
without fulltext support return an empty vector; the caller is
expected to have validated that the index exists via the
catalog first.Source§fn vector_search(
&self,
name: &str,
query: &LoraVector,
k: usize,
restrict_to: Option<&BTreeSet<u64>>,
) -> Vec<(u64, f64)>
fn vector_search( &self, name: &str, query: &LoraVector, k: usize, restrict_to: Option<&BTreeSet<u64>>, ) -> Vec<(u64, f64)>
(entity_id, score) pairs; the caller sorts by score
descending and truncates to top-k. Backends without vector
support return an empty vector. The caller has already
validated that the index exists via the catalog and that the
query vector matches the configured dimensions. Read moreSource§fn list_constraints(&self) -> Vec<ConstraintDefinition>
fn list_constraints(&self) -> Vec<ConstraintDefinition>
fn get_constraint(&self, name: &str) -> Option<ConstraintDefinition>
Source§fn check_node_create_against_constraints(
&self,
labels: &[String],
properties: &PropertyMap,
) -> Result<(), String>
fn check_node_create_against_constraints( &self, labels: &[String], properties: &PropertyMap, ) -> Result<(), String>
labels and properties violate any registered constraint?
Default returns Ok(()) so backends without a constraint
catalog pay nothing. The in-memory backend overrides this and
the call is virtually free when the catalog is empty.Source§fn check_relationship_create_against_constraints(
&self,
rel_type: &str,
properties: &PropertyMap,
) -> Result<(), String>
fn check_relationship_create_against_constraints( &self, rel_type: &str, properties: &PropertyMap, ) -> Result<(), String>
CREATE ()-[r:TYPE { ... }]->().Source§fn check_node_create_deferring_existence(
&self,
labels: &[String],
properties: &PropertyMap,
) -> Result<(), String>
fn check_node_create_deferring_existence( &self, labels: &[String], properties: &PropertyMap, ) -> Result<(), String>
Self::check_node_create_against_constraints minus existence
checks, for a statement that runs
Self::check_node_existence_constraints once it finishes (a later
SET may still supply the property). Defaults to the full check.Source§fn check_relationship_create_deferring_existence(
&self,
rel_type: &str,
properties: &PropertyMap,
) -> Result<(), String>
fn check_relationship_create_deferring_existence( &self, rel_type: &str, properties: &PropertyMap, ) -> Result<(), String>
Self::check_node_create_deferring_existence.Source§fn check_node_existence_constraints(&self, node_id: u64) -> Result<(), String>
fn check_node_existence_constraints(&self, node_id: u64) -> Result<(), String>
Ok(()).Source§fn check_relationship_existence_constraints(
&self,
rel_id: u64,
) -> Result<(), String>
fn check_relationship_existence_constraints( &self, rel_id: u64, ) -> Result<(), String>
Self::check_node_existence_constraints.Source§fn check_node_set_property_against_constraints(
&self,
node_id: u64,
key: &str,
value: &PropertyValue,
) -> Result<(), String>
fn check_node_set_property_against_constraints( &self, node_id: u64, key: &str, value: &PropertyValue, ) -> Result<(), String>
key = value on this
node violate any registered constraint? Default Ok(()).Source§fn check_node_remove_property_against_constraints(
&self,
node_id: u64,
key: &str,
) -> Result<(), String>
fn check_node_remove_property_against_constraints( &self, node_id: u64, key: &str, ) -> Result<(), String>
key on this node
violate an existence / key constraint? Default Ok(()).Source§fn check_node_replace_properties_against_constraints(
&self,
node_id: u64,
properties: &PropertyMap,
) -> Result<(), String>
fn check_node_replace_properties_against_constraints( &self, node_id: u64, properties: &PropertyMap, ) -> Result<(), String>
Ok(()).Source§fn check_relationship_set_property_against_constraints(
&self,
rel_id: u64,
key: &str,
value: &PropertyValue,
) -> Result<(), String>
fn check_relationship_set_property_against_constraints( &self, rel_id: u64, key: &str, value: &PropertyValue, ) -> Result<(), String>
fn check_relationship_remove_property_against_constraints( &self, rel_id: u64, key: &str, ) -> Result<(), String>
Source§fn check_relationship_replace_properties_against_constraints(
&self,
rel_id: u64,
properties: &PropertyMap,
) -> Result<(), String>
fn check_relationship_replace_properties_against_constraints( &self, rel_id: u64, properties: &PropertyMap, ) -> Result<(), String>
Ok(()).Source§fn check_node_add_label_against_constraints(
&self,
node_id: u64,
label: &str,
) -> Result<(), String>
fn check_node_add_label_against_constraints( &self, node_id: u64, label: &str, ) -> Result<(), String>
label to this node
activate a constraint the node currently violates?Source§fn graph_stats(&self) -> GraphStats
fn graph_stats(&self) -> GraphStats
GraphStats::default(),
which the planner treats as “no information available”.Source§fn node_text_candidates(
&self,
label: &str,
property: &str,
query: &str,
) -> Option<Vec<u64>>
fn node_text_candidates( &self, label: &str, property: &str, query: &str, ) -> Option<Vec<u64>>
Source§fn node_range_candidates(
&self,
label: &str,
property: &str,
lo: Option<&PropertyValue>,
hi: Option<&PropertyValue>,
) -> Option<Vec<u64>>
fn node_range_candidates( &self, label: &str, property: &str, lo: Option<&PropertyValue>, hi: Option<&PropertyValue>, ) -> Option<Vec<u64>>
[lo, hi] range on label.property.
Both bounds are inclusive at this layer; the caller refilters with
the precise predicate inclusivity (> vs >=, < vs <=). Read moreSource§fn node_range_ordered_chunk(
&self,
label: &str,
property: &str,
lo: Option<&PropertyValue>,
hi: Option<&PropertyValue>,
descending: bool,
after: Option<(&PropertyValue, u64)>,
max: usize,
) -> Option<Vec<u64>>
fn node_range_ordered_chunk( &self, label: &str, property: &str, lo: Option<&PropertyValue>, hi: Option<&PropertyValue>, descending: bool, after: Option<(&PropertyValue, u64)>, max: usize, ) -> Option<Vec<u64>>
label nodes with property in [lo, hi], in index order
(value, then id), strictly after the (value, id) cursor after,
at most max of them; descending reverses the order. Bounds are
inclusive here; the executor refilters exact ones. None means no
ordered index covers (label, property).Source§fn node_point_within_bbox(
&self,
label: &str,
property: &str,
ll: (f64, f64),
ur: (f64, f64),
) -> Option<Vec<u64>>
fn node_point_within_bbox( &self, label: &str, property: &str, ll: (f64, f64), ur: (f64, f64), ) -> Option<Vec<u64>>
[ll, ur] 2D
bounding box. The executor refilters every id with the precise
predicate, including the z-coordinate when the indexed point
is 3D.Source§fn node_point_within_distance(
&self,
label: &str,
property: &str,
center: (f64, f64),
max_distance: f64,
) -> Option<Vec<u64>>
fn node_point_within_distance( &self, label: &str, property: &str, center: (f64, f64), max_distance: f64, ) -> Option<Vec<u64>>
max_distance of (x, y). The
candidate set is conservative — the actual great-circle /
cartesian distance check is the executor’s responsibility.Source§fn relationship_text_candidates(
&self,
rel_type: &str,
property: &str,
query: &str,
) -> Option<Vec<u64>>
fn relationship_text_candidates( &self, rel_type: &str, property: &str, query: &str, ) -> Option<Vec<u64>>
rel_type whose
property value matches query (substring/prefix/suffix). Mirror
of Self::node_text_candidates for relationship-target indexes.Source§fn relationship_range_candidates(
&self,
rel_type: &str,
property: &str,
lo: Option<&PropertyValue>,
hi: Option<&PropertyValue>,
) -> Option<Vec<u64>>
fn relationship_range_candidates( &self, rel_type: &str, property: &str, lo: Option<&PropertyValue>, hi: Option<&PropertyValue>, ) -> Option<Vec<u64>>
rel_type on the
closed [lo, hi] range. Mirror of Self::node_range_candidates.Source§fn relationship_point_within_bbox(
&self,
rel_type: &str,
property: &str,
ll: (f64, f64),
ur: (f64, f64),
) -> Option<Vec<u64>>
fn relationship_point_within_bbox( &self, rel_type: &str, property: &str, ll: (f64, f64), ur: (f64, f64), ) -> Option<Vec<u64>>
[ll, ur] 2D bounding
box, scoped to relationships of rel_type. Mirror of
Self::node_point_within_bbox.Source§fn relationship_point_within_distance(
&self,
rel_type: &str,
property: &str,
center: (f64, f64),
max_distance: f64,
) -> Option<Vec<u64>>
fn relationship_point_within_distance( &self, rel_type: &str, property: &str, center: (f64, f64), max_distance: f64, ) -> Option<Vec<u64>>
max_distance of (x, y),
scoped to relationships of rel_type. Mirror of
Self::node_point_within_distance.Source§fn contains_node(&self, id: u64) -> bool
fn contains_node(&self, id: u64) -> bool
Source§fn node(&self, id: u64) -> Option<NodeRecord>
fn node(&self, id: u64) -> Option<NodeRecord>
BorrowedGraphStorage::node_ref and
override [with_node] to avoid clones on the hot path.Source§fn all_node_ids(&self) -> Vec<u64>
fn all_node_ids(&self) -> Vec<u64>
Source§fn node_ids_by_label(&self, label: &str) -> Vec<u64>
fn node_ids_by_label(&self, label: &str) -> Vec<u64>
fn contains_relationship(&self, id: u64) -> bool
fn relationship(&self, id: u64) -> Option<RelationshipRecord>
fn all_rel_ids(&self) -> Vec<u64>
fn rel_ids_by_type(&self, rel_type: &str) -> Vec<u64>
Source§fn relationship_endpoints(&self, id: u64) -> Option<(u64, u64)>
fn relationship_endpoints(&self, id: u64) -> Option<(u64, u64)>
(src, dst) for a relationship. Required because
traversal uses it on hot paths; a backend that stores endpoints
alongside the id index can answer this without fetching properties.Source§fn expand_ids(
&self,
node_id: u64,
direction: Direction,
types: &[String],
) -> Vec<(u64, u64)>
fn expand_ids( &self, node_id: u64, direction: Direction, types: &[String], ) -> Vec<(u64, u64)>
Source§fn try_for_each_expand_id<F, E>(
&self,
node_id: u64,
direction: Direction,
types: &[String],
visit: F,
) -> Result<(), E>
fn try_for_each_expand_id<F, E>( &self, node_id: u64, direction: Direction, types: &[String], visit: F, ) -> Result<(), E>
(relationship_id, other_node_id) pairs without
forcing backends to allocate an intermediate Vec. The default keeps the
trait easy to implement; hot backends can override it.fn all_labels(&self) -> Vec<String>
fn all_relationship_types(&self) -> Vec<String>
fn with_node<F, R>(&self, id: u64, f: F) -> Option<R>
fn with_relationship<F, R>(&self, id: u64, f: F) -> Option<R>
fn has_node(&self, id: u64) -> bool
fn has_relationship(&self, id: u64) -> bool
fn node_count(&self) -> usize
fn relationship_count(&self) -> usize
Source§fn node_count_by_label(&self, label: &str) -> usize
fn node_count_by_label(&self, label: &str) -> usize
label: exactly the rows a scan of
Self::node_ids_by_label yields. Backends with a label index
should answer this without materializing the ids.fn all_nodes(&self) -> Vec<NodeRecord>
fn nodes_by_label(&self, label: &str) -> Vec<NodeRecord>
fn all_relationships(&self) -> Vec<RelationshipRecord>
fn relationships_by_type(&self, rel_type: &str) -> Vec<RelationshipRecord>
fn relationship_ids_of(&self, node_id: u64, direction: Direction) -> Vec<u64>
fn outgoing_relationships(&self, node_id: u64) -> Vec<RelationshipRecord>
fn incoming_relationships(&self, node_id: u64) -> Vec<RelationshipRecord>
fn relationships_of( &self, node_id: u64, direction: Direction, ) -> Vec<RelationshipRecord>
fn degree(&self, node_id: u64, direction: Direction) -> usize
fn expand( &self, node_id: u64, direction: Direction, types: &[String], ) -> Vec<(RelationshipRecord, NodeRecord)>
fn neighbors( &self, node_id: u64, direction: Direction, types: &[String], ) -> Vec<NodeRecord>
fn all_node_property_keys(&self) -> Vec<String>
fn all_relationship_property_keys(&self) -> Vec<String>
fn label_property_keys(&self, label: &str) -> Vec<String>
fn rel_type_property_keys(&self, rel_type: &str) -> Vec<String>
fn find_nodes_by_property(
&self,
label: Option<&str>,
key: &str,
value: &PropertyValue,
) -> Vec<NodeRecord>where
InMemoryGraph: Sized,
fn find_node_ids_by_property(
&self,
label: Option<&str>,
key: &str,
value: &PropertyValue,
) -> Vec<u64>where
InMemoryGraph: Sized,
fn find_relationships_by_property(
&self,
rel_type: Option<&str>,
key: &str,
value: &PropertyValue,
) -> Vec<RelationshipRecord>where
InMemoryGraph: Sized,
fn find_relationship_ids_by_property(
&self,
rel_type: Option<&str>,
key: &str,
value: &PropertyValue,
) -> Vec<u64>where
InMemoryGraph: Sized,
fn node_exists_with_label_and_property(
&self,
label: &str,
key: &str,
value: &PropertyValue,
) -> boolwhere
InMemoryGraph: Sized,
fn relationship_exists_with_type_and_property(
&self,
rel_type: &str,
key: &str,
value: &PropertyValue,
) -> boolwhere
InMemoryGraph: Sized,
fn is_isolated(&self, node_id: u64) -> bool
fn expand_detailed( &self, node_id: u64, direction: Direction, types: &[String], ) -> Vec<ExpandedRelationship>
fn node_has_label(&self, node_id: u64, label: &str) -> boolwhere
Self: Sized,
fn node_labels(&self, node_id: u64) -> Option<Vec<String>>where
Self: Sized,
fn node_properties(&self, node_id: u64) -> Option<PropertyMap>where
Self: Sized,
fn node_property(&self, node_id: u64, key: &str) -> Option<PropertyValue>where
Self: Sized,
fn relationship_type(&self, rel_id: u64) -> Option<String>where
Self: Sized,
fn relationship_properties(&self, rel_id: u64) -> Option<PropertyMap>where
Self: Sized,
fn relationship_property(&self, rel_id: u64, key: &str) -> Option<PropertyValue>where
Self: Sized,
fn relationship_source(&self, rel_id: u64) -> Option<u64>
fn relationship_target(&self, rel_id: u64) -> Option<u64>
fn other_node(&self, rel_id: u64, node_id: u64) -> Option<u64>
fn has_label_name(&self, label: &str) -> bool
fn has_relationship_type_name(&self, rel_type: &str) -> bool
fn all_property_keys(&self) -> Vec<String>where
Self: Sized,
fn has_property_key(&self, key: &str) -> boolwhere
Self: Sized,
fn label_has_property_key(&self, label: &str, key: &str) -> boolwhere
Self: Sized,
fn rel_type_has_property_key(&self, rel_type: &str, key: &str) -> boolwhere
Self: Sized,
Source§impl GraphStorageMut for InMemoryGraph
impl GraphStorageMut for InMemoryGraph
fn try_create_node( &mut self, labels: Vec<String>, properties: PropertyMap, ) -> Option<NodeRecord>
fn create_relationship( &mut self, src: u64, dst: u64, rel_type: &str, properties: PropertyMap, ) -> Option<RelationshipRecord>
fn set_node_property( &mut self, node_id: u64, key: String, value: PropertyValue, ) -> bool
fn remove_node_property(&mut self, node_id: u64, key: &str) -> bool
fn add_node_label(&mut self, node_id: u64, label: &str) -> bool
fn remove_node_label(&mut self, node_id: u64, label: &str) -> bool
fn set_relationship_property( &mut self, rel_id: u64, key: String, value: PropertyValue, ) -> bool
fn remove_relationship_property(&mut self, rel_id: u64, key: &str) -> bool
fn delete_relationship(&mut self, rel_id: u64) -> bool
Source§fn delete_node(&mut self, node_id: u64) -> bool
fn delete_node(&mut self, node_id: u64) -> bool
Source§fn detach_delete_node(&mut self, node_id: u64) -> bool
fn detach_delete_node(&mut self, node_id: u64) -> bool
Source§fn clear(&mut self)
fn clear(&mut self)
Source§fn create_index(
&mut self,
request: IndexRequest,
if_not_exists: bool,
) -> Result<CreateIndexOutcome, CreateIndexError>
fn create_index( &mut self, request: IndexRequest, if_not_exists: bool, ) -> Result<CreateIndexOutcome, CreateIndexError>
CreateIndexError::Unsupported. Read moreSource§fn drop_index(
&mut self,
name: &str,
if_exists: bool,
) -> Result<DropIndexOutcome, DropIndexError>
fn drop_index( &mut self, name: &str, if_exists: bool, ) -> Result<DropIndexOutcome, DropIndexError>
DropIndexError::Unsupported.
if_exists collapses missing-index errors into
DropIndexOutcome::NoOpMissing.Source§fn create_constraint(
&mut self,
request: ConstraintRequest,
if_not_exists: bool,
) -> Result<CreateConstraintOutcome, CreateConstraintError>
fn create_constraint( &mut self, request: ConstraintRequest, if_not_exists: bool, ) -> Result<CreateConstraintOutcome, CreateConstraintError>
CreateConstraintError::Unsupported.
Uniqueness/key kinds may transparently register a backing range
index of the same name.Source§fn drop_constraint(
&mut self,
name: &str,
if_exists: bool,
) -> Result<DropConstraintOutcome, DropConstraintError>
fn drop_constraint( &mut self, name: &str, if_exists: bool, ) -> Result<DropConstraintOutcome, DropConstraintError>
Source§fn create_node(
&mut self,
labels: Vec<String>,
properties: PropertyMap,
) -> NodeRecordwhere
Self: Sized,
fn create_node(
&mut self,
labels: Vec<String>,
properties: PropertyMap,
) -> NodeRecordwhere
Self: Sized,
Self::try_create_node so allocation/id exhaustion can surface as
an ordinary error instead of a process panic.fn replace_node_properties(
&mut self,
node_id: u64,
properties: PropertyMap,
) -> boolwhere
Self: Sized,
fn merge_node_properties( &mut self, node_id: u64, properties: PropertyMap, ) -> bool
fn set_node_labels(&mut self, node_id: u64, labels: Vec<String>) -> boolwhere
Self: Sized,
fn replace_relationship_properties(
&mut self,
rel_id: u64,
properties: PropertyMap,
) -> boolwhere
Self: Sized,
fn merge_relationship_properties( &mut self, rel_id: u64, properties: PropertyMap, ) -> bool
fn delete_relationships_of( &mut self, node_id: u64, direction: Direction, ) -> usize
fn get_or_create_node(
&mut self,
labels: Vec<String>,
match_key: &str,
match_value: &PropertyValue,
init_properties: PropertyMap,
) -> NodeRecordwhere
Self: Sized,
Auto Trait Implementations§
impl !Freeze for InMemoryGraph
impl !RefUnwindSafe for InMemoryGraph
impl !UnwindSafe for InMemoryGraph
impl Send for InMemoryGraph
impl Sync for InMemoryGraph
impl Unpin for InMemoryGraph
impl UnsafeUnpin for InMemoryGraph
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> GraphCatalog for Twhere
T: GraphStorage,
impl<T> GraphCatalog for Twhere
T: GraphStorage,
fn node_count(&self) -> usize
fn relationship_count(&self) -> usize
fn has_label_name(&self, label: &str) -> bool
fn has_relationship_type_name(&self, rel_type: &str) -> bool
fn has_property_key(&self, key: &str) -> bool
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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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