Struct re_viewer::external::re_chunk_store::ChunkStore

source ·
pub struct ChunkStore {
Show 16 fields pub(crate) id: StoreId, pub(crate) info: Option<StoreInfo>, pub(crate) config: ChunkStoreConfig, pub(crate) type_registry: HashMap<ComponentName, DataType, BuildHasherDefault<NoHashHasher<ComponentName>>>, pub(crate) per_column_metadata: BTreeMap<EntityPath, BTreeMap<ComponentName, ColumnMetadataState>>, pub(crate) chunks_per_chunk_id: BTreeMap<ChunkId, Arc<Chunk>>, pub(crate) chunk_ids_per_min_row_id: BTreeMap<RowId, Vec<ChunkId>>, pub(crate) temporal_chunk_ids_per_entity_per_component: BTreeMap<EntityPath, BTreeMap<Timeline, BTreeMap<ComponentName, ChunkIdSetPerTime>>>, pub(crate) temporal_chunk_ids_per_entity: BTreeMap<EntityPath, BTreeMap<Timeline, ChunkIdSetPerTime>>, pub(crate) temporal_chunks_stats: ChunkStoreChunkStats, pub(crate) static_chunk_ids_per_entity: BTreeMap<EntityPath, BTreeMap<ComponentName, ChunkId>>, pub(crate) static_chunks_stats: ChunkStoreChunkStats, pub(crate) insert_id: u64, pub(crate) query_id: AtomicU64, pub(crate) gc_id: u64, pub(crate) event_id: AtomicU64,
}
Expand description

A complete chunk store: covers all timelines, all entities, everything.

The chunk store always works at the chunk level, whether it is for write & read queries or garbage collection. It is completely oblivious to individual rows.

Use the Display implementation for a detailed view of the internals.

Fields§

§id: StoreId§info: Option<StoreInfo>§config: ChunkStoreConfig§type_registry: HashMap<ComponentName, DataType, BuildHasherDefault<NoHashHasher<ComponentName>>>§per_column_metadata: BTreeMap<EntityPath, BTreeMap<ComponentName, ColumnMetadataState>>§chunks_per_chunk_id: BTreeMap<ChunkId, Arc<Chunk>>§chunk_ids_per_min_row_id: BTreeMap<RowId, Vec<ChunkId>>§temporal_chunk_ids_per_entity_per_component: BTreeMap<EntityPath, BTreeMap<Timeline, BTreeMap<ComponentName, ChunkIdSetPerTime>>>§temporal_chunk_ids_per_entity: BTreeMap<EntityPath, BTreeMap<Timeline, ChunkIdSetPerTime>>§temporal_chunks_stats: ChunkStoreChunkStats§static_chunk_ids_per_entity: BTreeMap<EntityPath, BTreeMap<ComponentName, ChunkId>>§static_chunks_stats: ChunkStoreChunkStats§insert_id: u64§query_id: AtomicU64§gc_id: u64§event_id: AtomicU64

Implementations§

source§

impl ChunkStore

source

pub fn schema(&self) -> Vec<ColumnDescriptor>

Returns the full schema of the store.

This will include a column descriptor for every timeline and every component on every entity that has been written to the store so far.

The order of the columns is guaranteed to be in a specific order:

  • first, the time columns in lexical order (frame_nr, log_time, …);
  • second, the component columns in lexical order (Color, Radius, ...).
source

pub fn resolve_time_selector( &self, selector: &TimeColumnSelector ) -> TimeColumnDescriptor

Given a TimeColumnSelector, returns the corresponding TimeColumnDescriptor.

source

pub fn resolve_component_selector( &self, selector: &ComponentColumnSelector ) -> ComponentColumnDescriptor

Given a ComponentColumnSelector, returns the corresponding ComponentColumnDescriptor.

If the component is not found in the store, a default descriptor is returned with a null datatype.

source

pub fn resolve_selectors( &self, selectors: impl IntoIterator<Item = impl Into<ColumnSelector>> ) -> Vec<ColumnDescriptor>

Given a set of ColumnSelectors, returns the corresponding ColumnDescriptors.

source

pub fn schema_for_query(&self, query: &QueryExpression) -> Vec<ColumnDescriptor>

Returns the filtered schema for the given QueryExpression.

The order of the columns is guaranteed to be in a specific order:

  • first, the time columns in lexical order (frame_nr, log_time, …);
  • second, the component columns in lexical order (Color, Radius, ...).
source§

impl ChunkStore

source

pub fn drop_time_range( &mut self, timeline: &Timeline, drop_range: ResolvedTimeRange ) -> Vec<ChunkStoreEvent>

Drop all events that are in the given range on the given timeline.

Note that matching events will be dropped from all timelines they appear on.

Static chunks are unaffected.

Used to implement undo (erase the last event from the blueprint db).

source§

impl ChunkStore

source

pub fn gc( &mut self, options: &GarbageCollectionOptions ) -> (Vec<ChunkStoreEvent>, ChunkStoreStats)

Triggers a garbage collection according to the desired target.

Returns the list of Chunks that were purged from the store in the form of ChunkStoreEvents.

§Semantics

Garbage collection works on a chunk-level basis and is driven by RowId order (specifically, the smallest RowId of each respective Chunk), i.e. the order defined by the clients’ wall-clocks, allowing it to drop data across the different timelines in a fair, deterministic manner. Similarly, out-of-order data is supported out of the box.

The garbage collector doesn’t deallocate data in and of itself: all it does is drop the store’s internal references to that data (the Chunks), which will be deallocated once their reference count reaches 0.

§Limitations

The garbage collector has limited support for latest-at semantics. The configuration option: GarbageCollectionOptions::protect_latest will protect the N latest values of each component on each timeline. The only practical guarantee this gives is that a latest-at query with a value of max-int will be unchanged. However, latest-at queries from other arbitrary points in time may provide different results pre- and post- GC.

source§

impl ChunkStore

source

pub fn all_timelines(&self) -> BTreeSet<Timeline>

Retrieve all Timelines in the store.

source

pub fn all_entities(&self) -> BTreeSet<EntityPath>

Retrieve all EntityPaths in the store.

source

pub fn all_components(&self) -> BTreeSet<ComponentName>

Retrieve all ComponentNames in the store.

source

pub fn all_components_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath ) -> Option<BTreeSet<ComponentName>>

Retrieve all the ComponentNames that have been written to for a given EntityPath on the specified Timeline.

Static components are always included in the results.

Returns None if the entity doesn’t exist at all on this timeline.

source

pub fn all_components_for_entity( &self, entity_path: &EntityPath ) -> Option<BTreeSet<ComponentName>>

Retrieve all the ComponentNames that have been written to for a given EntityPath.

Static components are always included in the results.

Returns None if the entity has never had any data logged to it.

source

pub fn entity_has_component_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath, component_name: &ComponentName ) -> bool

Check whether an entity has a static component or a temporal component on the specified timeline.

This does not check if the entity actually currently holds any data for that component.

source

pub fn entity_has_component( &self, entity_path: &EntityPath, component_name: &ComponentName ) -> bool

Check whether an entity has a static component or a temporal component on any timeline.

This does not check if the entity actually currently holds any data for that component.

source

pub fn entity_has_static_component( &self, entity_path: &EntityPath, component_name: &ComponentName ) -> bool

Check whether an entity has a specific static component.

This does not check if the entity actually currently holds any data for that component.

source

pub fn entity_has_temporal_component( &self, entity_path: &EntityPath, component_name: &ComponentName ) -> bool

Check whether an entity has a temporal component on any timeline.

This does not check if the entity actually currently holds any data for that component.

source

pub fn entity_has_temporal_component_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath, component_name: &ComponentName ) -> bool

Check whether an entity has a temporal component on a specific timeline.

This does not check if the entity actually currently holds any data for that component.

source

pub fn entity_has_data_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath ) -> bool

Check whether an entity has any data on a specific timeline, or any static data.

This is different from checking if the entity has any component, it also ensures that some data currently exists in the store for this entity.

source

pub fn entity_has_data(&self, entity_path: &EntityPath) -> bool

Check whether an entity has any static data or any temporal data on any timeline.

This is different from checking if the entity has any component, it also ensures that some data currently exists in the store for this entity.

source

pub fn entity_has_static_data(&self, entity_path: &EntityPath) -> bool

Check whether an entity has any static data.

This is different from checking if the entity has any component, it also ensures that some data currently exists in the store for this entity.

source

pub fn entity_has_temporal_data(&self, entity_path: &EntityPath) -> bool

Check whether an entity has any temporal data.

This is different from checking if the entity has any component, it also ensures that some data currently exists in the store for this entity.

source

pub fn entity_has_temporal_data_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath ) -> bool

Check whether an entity has any temporal data.

This is different from checking if the entity has any component, it also ensures that some data currently exists in the store for this entity.

source

pub fn entity_min_time( &self, timeline: &Timeline, entity_path: &EntityPath ) -> Option<TimeInt>

Find the earliest time at which something was logged for a given entity on the specified timeline.

Ignores static data.

source

pub fn entity_time_range( &self, timeline: &Timeline, entity_path: &EntityPath ) -> Option<ResolvedTimeRange>

Returns the min and max times at which data was logged for an entity on a specific timeline.

This ignores static data.

source

pub fn time_range(&self, timeline: &Timeline) -> Option<ResolvedTimeRange>

Returns the min and max times at which data was logged on a specific timeline, considering all entities.

This ignores static data.

source§

impl ChunkStore

source

pub fn latest_at_relevant_chunks( &self, query: &LatestAtQuery, entity_path: &EntityPath, component_name: ComponentName ) -> Vec<Arc<Chunk>>

Returns the most-relevant chunk(s) for the given LatestAtQuery and ComponentName.

The returned vector is guaranteed free of duplicates, by definition.

The ChunkStore always work at the Chunk level (as opposed to the row level): it is oblivious to the data therein. For that reason, and because Chunks are allowed to temporally overlap, it is possible that a query has more than one relevant chunk.

The caller should filter the returned chunks further (see Chunk::latest_at) in order to determine what exact row contains the final result.

If the entity has static component data associated with it, it will unconditionally override any temporal component data.

source

pub fn latest_at_relevant_chunks_for_all_components( &self, query: &LatestAtQuery, entity_path: &EntityPath ) -> Vec<Arc<Chunk>>

Returns the most-relevant temporal chunk(s) for the given LatestAtQuery.

The returned vector is guaranteed free of duplicates, by definition.

The ChunkStore always work at the Chunk level (as opposed to the row level): it is oblivious to the data therein. For that reason, and because Chunks are allowed to temporally overlap, it is possible that a query has more than one relevant chunk.

The caller should filter the returned chunks further (see Chunk::latest_at) in order to determine what exact row contains the final result.

This ignores static data.

source§

impl ChunkStore

source

pub fn range_relevant_chunks( &self, query: &RangeQuery, entity_path: &EntityPath, component_name: ComponentName ) -> Vec<Arc<Chunk>>

Returns the most-relevant chunk(s) for the given RangeQuery and ComponentName.

The returned vector is guaranteed free of duplicates, by definition.

The criteria for returning a chunk is only that it may contain data that overlaps with the queried range.

The caller should filter the returned chunks further (see Chunk::range) in order to determine how exactly each row of data fit with the rest.

If the entity has static component data associated with it, it will unconditionally override any temporal component data.

source

pub fn range_relevant_chunks_for_all_components( &self, query: &RangeQuery, entity_path: &EntityPath ) -> Vec<Arc<Chunk>>

Returns the most-relevant temporal chunk(s) for the given RangeQuery.

The returned vector is guaranteed free of duplicates, by definition.

The criteria for returning a chunk is only that it may contain data that overlaps with the queried range.

The caller should filter the returned chunks further (see Chunk::range) in order to determine how exactly each row of data fit with the rest.

This ignores static data.

source§

impl ChunkStore

source

pub fn stats(&self) -> ChunkStoreStats

source§

impl ChunkStore

§Entity stats
source

pub fn entity_stats_static( &self, entity_path: &EntityPath ) -> ChunkStoreChunkStats

Stats about all chunks with static data for an entity.

source

pub fn entity_stats_on_timeline( &self, entity_path: &EntityPath, timeline: &Timeline ) -> ChunkStoreChunkStats

Stats about all the chunks that has data for an entity on a specific timeline.

Does NOT include static data.

source§

impl ChunkStore

§Component path stats
source

pub fn num_static_events_for_component( &self, entity_path: &EntityPath, component_name: ComponentName ) -> u64

Returns the number of static events logged for an entity for a specific component.

This ignores temporal events.

source

pub fn num_temporal_events_for_component_on_timeline( &self, timeline: &Timeline, entity_path: &EntityPath, component_name: ComponentName ) -> u64

Returns the number of temporal events logged for an entity for a specific component on a given timeline.

This ignores static events.

source§

impl ChunkStore

source

pub fn new(id: StoreId, config: ChunkStoreConfig) -> ChunkStore

Instantiate a new empty ChunkStore with the given ChunkStoreConfig.

See also:

source

pub fn new_handle(id: StoreId, config: ChunkStoreConfig) -> ChunkStoreHandle

Instantiate a new empty ChunkStore with the given ChunkStoreConfig.

Pre-wraps the result in a ChunkStoreHandle.

See also:

source

pub fn id(&self) -> StoreId

source

pub fn set_info(&mut self, info: StoreInfo)

source

pub fn info(&self) -> Option<&StoreInfo>

source

pub fn generation(&self) -> ChunkStoreGeneration

Return the current ChunkStoreGeneration. This can be used to determine whether the database has been modified since the last time it was queried.

source

pub fn config(&self) -> &ChunkStoreConfig

See ChunkStoreConfig for more information about configuration.

source

pub fn iter_chunks(&self) -> impl Iterator<Item = &Arc<Chunk>>

Iterate over all chunks in the store, in ascending ChunkId order.

source

pub fn chunk(&self, id: &ChunkId) -> Option<&Arc<Chunk>>

Get a chunk based on its ID.

source

pub fn num_chunks(&self) -> usize

Get the number of chunks.

source

pub fn lookup_datatype( &self, component_name: &ComponentName ) -> Option<&DataType>

Lookup the latest arrow ArrowDataType used by a specific re_types_core::Component.

source

pub fn lookup_column_metadata( &self, entity_path: &EntityPath, component_name: &ComponentName ) -> Option<ColumnMetadata>

Lookup the ColumnMetadata for a specific EntityPath and re_types_core::Component.

source§

impl ChunkStore

source

pub fn from_rrd_filepath( store_config: &ChunkStoreConfig, path_to_rrd: impl AsRef<Path>, version_policy: VersionPolicy ) -> Result<BTreeMap<StoreId, ChunkStore>, Error>

Instantiate a new ChunkStore with the given ChunkStoreConfig.

The stores will be prefilled with the data at the specified path.

See also:

source

pub fn handle_from_rrd_filepath( store_config: &ChunkStoreConfig, path_to_rrd: impl AsRef<Path>, version_policy: VersionPolicy ) -> Result<BTreeMap<StoreId, ChunkStoreHandle>, Error>

Instantiate a new ChunkStore with the given ChunkStoreConfig.

Wraps the results in ChunkStoreHandles.

The stores will be prefilled with the data at the specified path.

See also:

source§

impl ChunkStore

source

pub fn register_subscriber( subscriber: Box<dyn ChunkStoreSubscriber> ) -> ChunkStoreSubscriberHandle

Registers a ChunkStoreSubscriber so it gets automatically notified when data gets added and/or removed to/from a ChunkStore.

Refer to ChunkStoreEvent’s documentation for more information about these events.

§Scope

Registered ChunkStoreSubscribers are global scope: they get notified of all events from all existing ChunkStores, including ChunkStores created after the subscriber was registered.

Use ChunkStoreEvent::store_id to identify the source of an event.

§Late registration

Subscribers must be registered before a store gets created to guarantee that no events were missed.

ChunkStoreEvent::event_id can be used to identify missing events.

§Ordering

The order in which registered subscribers are notified is undefined and will likely become concurrent in the future.

If you need a specific order across multiple subscribers, embed them into an orchestrating subscriber.

source

pub fn with_subscriber<V, T, F>( _: ChunkStoreSubscriberHandle, f: F ) -> Option<T>
where V: ChunkStoreSubscriber, F: FnMut(&V) -> T,

Passes a reference to the downcasted subscriber to the given FnMut callback.

Returns None if the subscriber doesn’t exist or downcasting failed.

source

pub fn with_subscriber_once<V, T, F>( _: ChunkStoreSubscriberHandle, f: F ) -> Option<T>
where V: ChunkStoreSubscriber, F: FnOnce(&V) -> T,

Passes a reference to the downcasted subscriber to the given FnOnce callback.

Returns None if the subscriber doesn’t exist or downcasting failed.

source

pub fn with_subscriber_mut<V, T, F>( _: ChunkStoreSubscriberHandle, f: F ) -> Option<T>
where V: ChunkStoreSubscriber, F: FnMut(&mut V) -> T,

Passes a mutable reference to the downcasted subscriber to the given callback.

Returns None if the subscriber doesn’t exist or downcasting failed.

source§

impl ChunkStore

source

pub fn insert_chunk( &mut self, chunk: &Arc<Chunk> ) -> Result<Vec<ChunkStoreEvent>, ChunkStoreError>

Inserts a Chunk in the store.

Iff the store was modified, all registered subscribers will be notified and the resulting ChunkStoreEvent will be returned, or None otherwise.

  • Trying to insert an unsorted chunk (Chunk::is_sorted) will fail with an error.
  • Inserting a duplicated ChunkId will result in a no-op.
  • Inserting an empty Chunk will result in a no-op.
source

pub fn drop_entity_path( &mut self, entity_path: &EntityPath ) -> Vec<ChunkStoreEvent>

Unconditionally drops all the data for a given entity_path.

Returns the list of Chunks that were dropped from the store in the form of ChunkStoreEvents.

This is not recursive. The store is unaware of the entity hierarchy.

Trait Implementations§

source§

impl Clone for ChunkStore

source§

fn clone(&self) -> ChunkStore

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ChunkStore

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Display for ChunkStore

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for T
where T: Clone,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

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

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

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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

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

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Ungil for T
where T: Send,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,