Struct kanidmd_lib::entry::Entry

source ·
pub struct Entry<VALID, STATE> { /* private fields */ }
Expand description

Entry is the core data storage type of the server. Almost every aspect of the server is designed to read, handle and manipulate entries.

Entries store attribute value assertions, or AVA. These are sets of key-values.

Entries have a lifecycle within a single operation, and as part of replication. The lifecycle for operations is defined through state and valid types. Each entry has a pair Of these types at anytime. The first is the AVA schema and access control assertion state. This is represented by the type VALID as one of EntryValid, EntryInvalid or EntryReduced. Every entry starts as EntryInvalid, and when checked by the schema for correctness, transitions to EntryValid. While an entry is EntryValid it can not be altered - you must invalidate it to EntryInvalid, then modify, then check again. An entry that has had access controls applied moves from EntryValid to EntryReduced, to show that the AVAs have reduced to the valid read set of the current event user.

The second type of STATE represents the database commit state and internal db ID’s. A new entry that has never been committed is EntryNew, but an entry that has been retrieved from the database is EntryCommitted. This affects the operations you can apply IE modify or delete.

These types exist to prevent at compile time, mishandling of Entries, to ensure they are always handled with the correct lifecycles and processes.

Implementations§

source§

impl<STATE> Entry<EntryInit, STATE>
where STATE: Clone,

source

pub fn get_uuid(&self) -> Option<Uuid>

Get the uuid of this entry.

source§

impl Entry<EntryInit, EntryNew>

source

pub fn new() -> Self

source

pub fn from_proto_entry( e: &ProtoEntry, qs: &mut QueryServerWriteTransaction<'_>, ) -> Result<Self, OperationError>

Consume a Protocol Entry from JSON, and validate and process the data into an internal Entry type.

source

pub fn from_proto_entry_str( es: &str, qs: &mut QueryServerWriteTransaction<'_>, ) -> Result<Self, OperationError>

Given a proto entry in JSON formed as a serialised string, processed that string into an Entry.

source

pub fn assign_cid( self, cid: Cid, schema: &dyn SchemaTransaction, ) -> Entry<EntryInvalid, EntryNew>

Assign the Change Identifier to this Entry, allowing it to be modified and then written to the Backend

source

pub fn compare(&self, rhs: &Entry<EntrySealed, EntryCommitted>) -> bool

Compare this entry to another.

source

pub fn add_ava(&mut self, attr: Attribute, value: Value)

Add an attribute-value-assertion to this Entry.

source

pub fn remove_ava(&mut self, attr: &Attribute)

source

pub fn set_ava<T>(&mut self, attr: Attribute, iter: T)
where T: IntoIterator<Item = Value>,

Replace the existing content of an attribute set of this Entry, with a new set of Values.

source

pub fn get_ava_mut<A: AsRef<Attribute>>( &mut self, attr: A, ) -> Option<&mut ValueSet>

source§

impl Entry<EntryRefresh, EntryNew>

source§

impl<STATE> Entry<EntryRefresh, STATE>

source

pub fn validate( self, schema: &dyn SchemaTransaction, ) -> Result<Entry<EntryValid, STATE>, SchemaError>

source§

impl<STATE> Entry<EntryIncremental, STATE>

source

pub fn get_uuid(&self) -> Uuid

source§

impl Entry<EntryIncremental, EntryNew>

source

pub fn rehydrate( repl_inc_entry: ReplIncrementalEntryV1, ) -> Result<Self, OperationError>

source§

impl<STATE> Entry<EntryInvalid, STATE>

source

pub fn validate( self, schema: &dyn SchemaTransaction, ) -> Result<Entry<EntryValid, STATE>, SchemaError>

Validate that this entry and its attribute-value sets are conformant to the system’s’ schema and the relevant syntaxes.

source§

impl Entry<EntryInvalid, EntryCommitted>

source

pub fn to_recycled(self) -> Self

Convert this entry into a recycled entry, that is “in the recycle bin”.

source

pub fn to_conflict<T>(&mut self, iter: T)
where T: IntoIterator<Item = Uuid>,

Convert this entry into a conflict, declaring what entries it conflicted against.

source

pub fn to_revived(self) -> Self

Extract this entry from the recycle bin into a live state.

source§

impl Entry<EntrySealed, EntryNew>

source

pub fn into_sealed_committed_id( self, id: u64, ) -> Entry<EntrySealed, EntryCommitted>

Given this validated and sealed entry, process it with a Backend ID number so that it can be then serialised to the database.

source

pub fn compare(&self, rhs: &Entry<EntrySealed, EntryNew>) -> bool

source§

impl<VALID> Entry<VALID, EntryCommitted>

source

pub fn get_id(&self) -> u64

If this entry has ever been committed to disk, retrieve its database id number.

source§

impl<STATE> Entry<EntrySealed, STATE>

source

pub fn into_init(self) -> Entry<EntryInit, STATE>

source§

impl Entry<EntrySealed, EntryCommitted>

source

pub fn insert_claim(&mut self, value: &str)

Insert a claim to this entry. This claim can NOT be persisted to disk, this is only used during a single Event session.

source

pub fn compare(&self, rhs: &Entry<EntrySealed, EntryCommitted>) -> bool

source

pub fn to_dbentry(&self) -> DbEntry

Serialise this entry to its Database format ready for storage.

source

pub fn from_dbentry(db_e: DbEntry, id: u64) -> Option<Self>

source

pub fn reduce_attributes( &self, allowed_attrs: &BTreeSet<Attribute>, ) -> Entry<EntryReduced, EntryCommitted>

Given a set of attributes that are allowed to be seen on this entry, process and remove all other values that are NOT allowed in this query.

source

pub fn to_tombstone(&self, cid: Cid) -> Entry<EntryInvalid, EntryCommitted>

Convert this recycled entry, into a tombstone ready for reaping.

source

pub fn into_valid( self, ecstate: EntryChangeState, ) -> Entry<EntryValid, EntryCommitted>

Given a current transaction change identifier, mark this entry as valid and committed.

source

pub fn verify( &self, schema: &dyn SchemaTransaction, results: &mut Vec<Result<(), ConsistencyError>>, )

source§

impl<STATE> Entry<EntryValid, STATE>

source

pub fn seal(self, schema: &dyn SchemaTransaction) -> Entry<EntrySealed, STATE>

source

pub fn get_uuid(&self) -> Uuid

source§

impl<STATE> Entry<EntrySealed, STATE>
where STATE: Clone,

source

pub fn invalidate(self, cid: Cid, trim_cid: &Cid) -> Entry<EntryInvalid, STATE>

source

pub fn get_uuid(&self) -> Uuid

source

pub fn get_changestate(&self) -> &EntryChangeState

source§

impl Entry<EntryReduced, EntryCommitted>

source

pub fn get_uuid(&self) -> Uuid

source

pub fn to_pe( &self, qs: &mut QueryServerReadTransaction<'_>, ) -> Result<ProtoEntry, OperationError>

Transform this reduced entry into a JSON protocol form that can be sent to clients.

source

pub fn to_scim_kanidm( &self, read_txn: &mut QueryServerReadTransaction<'_>, ) -> Result<ScimEntryKanidm, OperationError>

source

pub fn to_ldap( &self, qs: &mut QueryServerReadTransaction<'_>, basedn: &str, all_attrs: bool, l_attrs: &[String], ) -> Result<LdapSearchResultEntry, OperationError>

Transform this reduced entry into an LDAP form that can be sent to clients.

source§

impl<VALID, STATE> Entry<VALID, STATE>

source

pub fn get_ava_names(&self) -> impl Iterator<Item = &str>

Get an iterator over the current set of attribute names that this entry contains.

source

pub fn get_ava(&self) -> &Eattrs

Get an iterator over the current set of values for an attribute name.

source

pub fn get_ava_iter(&self) -> impl Iterator<Item = (&Attribute, &ValueSet)>

source

pub fn get_ava_set<A: AsRef<Attribute>>(&self, attr: A) -> Option<&ValueSet>

Return a reference to the current set of values that are associated to this attribute.

source

pub fn get_ava_refer<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeSet<Uuid>>

source

pub fn get_ava_as_iutf8_iter<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = &str>>

source

pub fn get_ava_as_iutf8<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeSet<String>>

source

pub fn get_ava_as_image<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&HashSet<ImageValue>>

source

pub fn get_ava_single_image<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<ImageValue>

source

pub fn get_ava_single_credential_type<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<CredentialType>

source

pub fn get_ava_as_oauthscopes<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = &str>>

source

pub fn get_ava_as_oauthscopemaps<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, BTreeSet<String>>>

source

pub fn get_ava_as_intenttokens<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<String, IntentTokenState>>

source

pub fn get_ava_as_session_map<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, Session>>

source

pub fn get_ava_as_apitoken_map<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, ApiToken>>

source

pub fn get_ava_as_oauth2session_map<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, Oauth2Session>>

source

pub fn get_ava_iter_iname<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = &str>>

If possible, return an iterator over the set of values transformed into a &str.

source

pub fn get_ava_iter_iutf8<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = &str>>

If possible, return an iterator over the set of values transformed into a &str.

source

pub fn get_ava_as_refuuid<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<Box<dyn Iterator<Item = Uuid> + '_>>

If possible, return an iterator over the set of values transformed into a Uuid.

source

pub fn get_ava_iter_sshpubkeys<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = String> + '_>

If possible, return an iterator over the set of ssh key values transformed into a &str.

source

pub fn get_ava_single<A: AsRef<Attribute>>(&self, attr: A) -> Option<Value>

Return a single value of this attributes name, or None if it is NOT present, or there are multiple values present (ambiguous).

source

pub fn get_ava_single_proto_string<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<String>

source

pub fn get_ava_single_bool<A: AsRef<Attribute>>(&self, attr: A) -> Option<bool>

Return a single bool, if valid to transform this value into a boolean.

source

pub fn get_ava_single_uint32<A: AsRef<Attribute>>(&self, attr: A) -> Option<u32>

Return a single uint32, if valid to transform this value.

source

pub fn get_ava_single_syntax<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<SyntaxType>

Return a single syntax type, if valid to transform this value.

source

pub fn get_ava_single_credential<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&Credential>

Return a single credential, if valid to transform this value.

source

pub fn get_ava_passkeys<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, (String, PasskeyV4)>>

Get the set of passkeys on this account, if any are present.

source

pub fn get_ava_attestedpasskeys<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, (String, AttestedPasskeyV4)>>

Get the set of devicekeys on this account, if any are present.

source

pub fn get_ava_uihint<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeSet<UiHint>>

Get the set of uihints on this account, if any are present.

source

pub fn get_ava_single_secret<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&str>

Return a single secret value, if valid to transform this value.

source

pub fn get_ava_single_datetime<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<OffsetDateTime>

Return a single datetime, if valid to transform this value.

source

pub fn get_ava_single_url<A: AsRef<Attribute>>(&self, attr: A) -> Option<&Url>

Return a single &Url, if valid to transform this value.

source

pub fn get_ava_single_uuid<A: AsRef<Attribute>>(&self, attr: A) -> Option<Uuid>

source

pub fn get_ava_single_refer<A: AsRef<Attribute>>(&self, attr: A) -> Option<Uuid>

source

pub fn get_ava_mail_primary<A: AsRef<Attribute>>(&self, attr: A) -> Option<&str>

source

pub fn get_ava_iter_mail<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<impl Iterator<Item = &str>>

source

pub fn get_ava_single_protofilter<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&ProtoFilter>

Return a single protocol filter, if valid to transform this value.

source

pub fn get_ava_single_private_binary<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&[u8]>

source

pub fn get_ava_single_jws_key_es256<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&JwsEs256Signer>

source

pub fn get_ava_single_eckey_private<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&EcKey<Private>>

source

pub fn get_ava_single_eckey_public<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&EcKey<Public>>

source

pub fn get_ava_webauthn_attestation_ca_list<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&AttestationCaList>

source

pub fn get_ava_application_password<A: AsRef<Attribute>>( &self, attr: A, ) -> Option<&BTreeMap<Uuid, Vec<ApplicationPassword>>>

source

pub fn attribute_pres<A: AsRef<Attribute>>(&self, attr: A) -> bool

Assert if an attribute of this name is present on this entry.

source

pub fn attribute_equality<A: AsRef<Attribute>>( &self, attr: A, value: &PartialValue, ) -> bool

Assert if an attribute of this name is present, and one of its values contains an exact match of this partial value.

source

pub fn attribute_substring<A: AsRef<Attribute>>( &self, attr: A, subvalue: &PartialValue, ) -> bool

Assert if an attribute of this name is present, and one of it’s values contains the following substring, if possible to perform the substring comparison.

source

pub fn attribute_startswith<A: AsRef<Attribute>>( &self, attr: A, subvalue: &PartialValue, ) -> bool

Assert if an attribute of this name is present, and one of its values startswith the following string, if possible to perform the comparison.

source

pub fn attribute_endswith<A: AsRef<Attribute>>( &self, attr: A, subvalue: &PartialValue, ) -> bool

Assert if an attribute of this name is present, and one of its values startswith the following string, if possible to perform the comparison.

source

pub fn attribute_lessthan<A: AsRef<Attribute>>( &self, attr: A, subvalue: &PartialValue, ) -> bool

Assert if an attribute of this name is present, and one of its values is less than the following partial value

source

pub fn entry_match_no_index(&self, filter: &Filter<FilterValidResolved>) -> bool

Test if the following filter applies to and matches this entry.

source

pub fn filter_from_attrs( &self, attrs: &[Attribute], ) -> Option<Filter<FilterInvalid>>

Given this entry, generate a filter containing the requested attributes strings as equality components.

source

pub fn gen_modlist_assert( &self, schema: &dyn SchemaTransaction, ) -> Result<ModifyList<ModifyInvalid>, SchemaError>

Given this entry, generate a modification list that would “assert” another entry is in the same/identical attribute state.

source

pub fn mask_recycled_ts(&self) -> Option<&Self>

Determine if this entry is recycled or a tombstone, and map that to “None”. This allows filter_map to effectively remove entries that should not be considered as “alive”.

source

pub fn mask_recycled(&self) -> Option<&Self>

Determine if this entry is recycled, and map that to “None”. This allows filter_map to effectively remove entries that are recycled in some cases.

source

pub fn mask_tombstone(&self) -> Option<&Self>

Determine if this entry is a tombstone, and map that to “None”. This allows filter_map to effectively remove entries that are tombstones in some cases.

source§

impl<STATE> Entry<EntryInvalid, STATE>
where STATE: Clone,

source

pub fn add_ava(&mut self, attr: Attribute, value: Value)

source

pub fn add_ava_if_not_exist<A: AsRef<Attribute>>( &mut self, attr: A, value: Value, )

source

pub fn pop_ava<A: AsRef<Attribute>>(&mut self, attr: A) -> Option<ValueSet>

Remove this value set from the entry, returning the value set at the time of removal.

source

pub fn set_ava<T>(&mut self, attr: &Attribute, iter: T)
where T: Clone + IntoIterator<Item = Value>,

Replace the content of this attribute with the values from this iterator. If the iterator is empty, the attribute is purged.

source

pub fn set_ava_set(&mut self, attr: &Attribute, vs: ValueSet)

Replace the content of this attribute with a new value set. Effectively this is a a “purge and set”.

source

pub fn merge_ava_set( &mut self, attr: &Attribute, vs: ValueSet, ) -> Result<(), OperationError>

Merge the content from the new ValueSet into the existing ValueSet. If no existing ValueSet is present, then these data are inserted.

source

pub fn apply_modlist( &mut self, modlist: &ModifyList<ModifyValid>, ) -> Result<(), OperationError>

Apply the content of this modlist to this entry, enforcing the expressed state.

Trait Implementations§

source§

impl<VALID, STATE> Clone for Entry<VALID, STATE>
where VALID: Clone, STATE: Clone,

source§

fn clone(&self) -> Entry<VALID, STATE>

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<VALID, STATE> Debug for Entry<VALID, STATE>
where STATE: Debug, VALID: Debug,

source§

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

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

impl Default for Entry<EntryInit, EntryNew>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<STATE> Display for Entry<EntryInit, STATE>
where STATE: Clone,

source§

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

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

impl<STATE> Display for Entry<EntrySealed, STATE>
where STATE: Clone,

source§

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

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

impl From<&Entry<EntrySealed, EntryCommitted>> for Option<AccountPolicy>

source§

fn from(val: &EntrySealedCommitted) -> Self

Converts to this type from the input type.
source§

impl From<&SchemaAttribute> for Entry<EntryInit, EntryNew>

source§

fn from(s: &SchemaAttribute) -> Self

Converts to this type from the input type.
source§

impl From<&SchemaClass> for Entry<EntryInit, EntryNew>

source§

fn from(s: &SchemaClass) -> Self

Converts to this type from the input type.
source§

impl GetUuid for Entry<EntryReduced, EntryCommitted>

source§

fn get_uuid(&self) -> Uuid

source§

impl<STATE> GetUuid for Entry<EntrySealed, STATE>
where STATE: Clone,

source§

fn get_uuid(&self) -> Uuid

source§

impl<VALID, STATE> PartialEq for Entry<VALID, STATE>

source§

fn eq(&self, rhs: &Entry<VALID, STATE>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

§

impl<VALID, STATE> Freeze for Entry<VALID, STATE>
where VALID: Freeze, STATE: Freeze,

§

impl<VALID, STATE> !RefUnwindSafe for Entry<VALID, STATE>

§

impl<VALID, STATE> Send for Entry<VALID, STATE>
where VALID: Send, STATE: Send,

§

impl<VALID, STATE> Sync for Entry<VALID, STATE>
where VALID: Sync, STATE: Sync,

§

impl<VALID, STATE> Unpin for Entry<VALID, STATE>
where VALID: Unpin, STATE: Unpin,

§

impl<VALID, STATE> !UnwindSafe for Entry<VALID, STATE>

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
§

impl<'a, T> AsTaggedExplicit<'a> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>

§

impl<'a, T> AsTaggedImplicit<'a> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self>

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<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

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

source§

fn __clone_box(&self, _: Private) -> *mut ()

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

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

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
§

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

source§

type Output = T

Should always be Self
source§

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

source§

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
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>,

source§

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>,

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.
§

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