Struct Repository

Source
pub struct Repository<M: Model> { /* private fields */ }
Expand description

Associate a mongodb::Collection and a specific Model.

This type can safely be copied and passed around because std::sync::Arc is used internally. Underlying mongodb::Collection can be retrieved at anytime with Repository::get_underlying.

Implementations§

Source§

impl<M: Model> Repository<M>

Source

pub fn new(db: Database) -> Self

Create a new repository from the given mongo client.

Source

pub fn new_with_options(db: Database, options: CollectionOptions) -> Self

Create a new repository with associated collection options (override Model::coll_options).

Source

pub fn collection_name(&self) -> &'static str

Returns associated M::collection_name.

Source

pub fn get_underlying(&self) -> Collection<M>

Returns underlying mongodb::Collection.

Source

pub fn cast_model<OtherModel>(self) -> Repository<OtherModel>
where OtherModel: Model<CollConf = M::CollConf>,

Convert this repository to use another Model. Only compiles if both Model::CollConf are identicals.

§Example
use mongodm::{ToRepository, Model, CollectionConfig};
use mongodm::mongo::bson::doc;
use mongodm::f;
use serde::{Serialize, Deserialize};

struct UserCollConf;

impl CollectionConfig for UserCollConf {
    fn collection_name() -> &'static str {
        "cast_model"
    }
}

// Latest schema currently in use
#[derive(Serialize, Deserialize)]
struct User {
    username: String,
    last_seen: i64,
}

impl Model for User {
    type CollConf = UserCollConf;
}

// Old schema
#[derive(Serialize, Deserialize)]
struct UserV1 {
    name: String,
    ls: i64,
}

// Versionned version of our `User`
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
enum UserVersionned {
    Last(User),
    V1(UserV1),
}

impl Model for UserVersionned {
    type CollConf = UserCollConf; // same as the non-versionned version
}

// We have some repository for `User`
let repo = db.repository::<User>();

// Assume the following document is stored: { "name": "Bernard", "ls": 1500 }

// Following query should fails because the schema doesn't match
let err = repo.find_one(doc!{ f!(name in UserV1): "Bernard" }, None).await.err().unwrap();
assert_eq!(err.to_string(), "missing field `username`"); // serde deserialization error

// We can get a repository for `UserVersionned` from our `Repository<User>`
// because `User::CollConf` == `UserVersionned::CollConf`
let repo_versionned = repo.cast_model::<UserVersionned>();

// Our versionned model should match with the document
let ret = repo_versionned.find_one(doc!{ f!(name in UserV1): "Bernard" }, None).await?;
match ret {
    Some(UserVersionned::V1(UserV1 { name, ls: 1500 })) if name == "Bernard" => { /* success */ }
    _ => panic!("Expected document was missing"),
}

Following code will fail to compile because CollectionConfig doesn’t match.

use mongodm::{ToRepository, Model, CollectionConfig};
use serde::{Serialize, Deserialize};

struct ACollConf;

impl CollectionConfig for ACollConf {
    fn collection_name() -> &'static str { "a" }
}

#[derive(Serialize, Deserialize)]
struct A;

impl Model for A {
    type CollConf = ACollConf;
}

struct BCollConf;

impl CollectionConfig for BCollConf {
    fn collection_name() -> &'static str { "B" }
}

#[derive(Serialize, Deserialize)]
struct B;

impl Model for B {
    type CollConf = BCollConf;
}

// Doesn't compile because `A` and `B` doesn't share the same `CollectionConfig`.
db.repository::<A>().cast_model::<B>();
Source

pub async fn bulk_update<V, U>(&self, updates: V) -> Result<BulkUpdateResult>
where V: Borrow<Vec<U>> + Send + Sync, U: Borrow<BulkUpdate> + Send + Sync,

Apply multiple update operations in bulk.

This will be removed once support for bulk update is added to the official driver. see for tracking progress on this feature in the official driver.

§Example
use mongodm::prelude::*;
/* ... */
let db: mongodb::Database; /* exists */
let repository = db.repository::<User>();
/* ... */
let bulk_update_res = repository
    .bulk_update(&vec![
        &BulkUpdate {
            query: doc! { f!(name in User): "Dane" },
            update: doc! { Set: { f!(age in User): 12 } },
            options: None,
        },
        &BulkUpdate {
            query: doc! { f!(name in User): "David" },
            update: doc! { Set: { f!(age in User): 30 } },
            options: None,
        },
    ])
    .await
    .unwrap();
assert_eq!(bulk_update_res.nb_affected, 2);
assert_eq!(bulk_update_res.nb_modified, 2);

Methods from Deref<Target = Collection<M>>§

Source

pub fn aggregate( &self, pipeline: impl IntoIterator<Item = Document>, ) -> Aggregate<'_>

Runs an aggregation operation.

See the documentation here for more information on aggregations.

await will return Result<Cursor<Document>>. If a ClientSession was provided, the returned cursor will be a SessionCursor. If with_type was called, the returned cursor will be generic over the T specified.

These methods can be chained before .await to set options:

Source

pub fn estimated_document_count(&self) -> EstimatedDocumentCount<'_>

Estimates the number of documents in the collection using collection metadata.

Due to an oversight in versions 5.0.0 - 5.0.7 of MongoDB, the count server command, which estimatedDocumentCount uses in its implementation, was not included in v1 of the Stable API. Users of the Stable API with estimatedDocumentCount are recommended to upgrade their cluster to 5.0.8+ or set ServerApi::strict to false to avoid encountering errors.

For more information on the behavior of the count server command, see Count: Behavior.

await will return Result<u64>.

These methods can be chained before .await to set options:

Source

pub fn count_documents(&self, filter: Document) -> CountDocuments<'_>

Gets the number of documents.

Note that this method returns an accurate count.

await will return Result<u64>.

These methods can be chained before .await to set options:

Source

pub fn create_index(&self, index: IndexModel) -> CreateIndex<'_>

Creates the given index on this collection.

await will return Result<CreateIndexResult>.

These methods can be chained before .await to set options:

Source

pub fn create_indexes( &self, indexes: impl IntoIterator<Item = IndexModel>, ) -> CreateIndex<'_, Multiple>

Creates the given indexes on this collection.

await will return Result<CreateIndexesResult>.

These methods can be chained before .await to set options:

Source

pub fn delete_one(&self, query: Document) -> Delete<'_>

Deletes up to one document found matching query.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<DeleteResult>.

These methods can be chained before .await to set options:

Source

pub fn delete_many(&self, query: Document) -> Delete<'_>

Deletes all documents stored in the collection matching query.

await will return Result<DeleteResult>.

These methods can be chained before .await to set options:

Source

pub fn distinct( &self, field_name: impl AsRef<str>, filter: Document, ) -> Distinct<'_>

Finds the distinct values of the field specified by field_name across the collection.

await will return Result<Vec<Bson>>.

These methods can be chained before .await to set options:

Source

pub fn drop(&self) -> DropCollection<'_>

Drops the collection, deleting all data and indexes stored in it.

await will return Result<()>.

These methods can be chained before .await to set options:

Source

pub fn drop_index(&self, name: impl AsRef<str>) -> DropIndex<'_>

Drops the index specified by name from this collection.

await will return Result<()>.

These methods can be chained before .await to set options:

Source

pub fn drop_indexes(&self) -> DropIndex<'_>

Drops all indexes associated with this collection.

await will return Result<()>.

These methods can be chained before .await to set options:

Source

pub fn find(&self, filter: Document) -> Find<'_, T>

Finds the documents in the collection matching filter.

await will return Result<Cursor<T>> (or Result<SessionCursor<T>> if a session is provided).

These methods can be chained before .await to set options:

Source

pub fn find_one(&self, filter: Document) -> FindOne<'_, T>

Finds a single document in the collection matching filter.

await will return Result<Option<T>>.

These methods can be chained before .await to set options:

Source

pub fn find_one_and_delete(&self, filter: Document) -> FindOneAndDelete<'_, T>

Atomically finds up to one document in the collection matching filter and deletes it.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<Option<T>>.

These methods can be chained before .await to set options:

Source

pub fn find_one_and_update( &self, filter: Document, update: impl Into<UpdateModifications>, ) -> FindOneAndUpdate<'_, T>

Atomically finds up to one document in the collection matching filter and updates it. Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<Option<T>>.

These methods can be chained before .await to set options:

Source

pub fn find_one_and_replace( &self, filter: Document, replacement: impl Borrow<T>, ) -> FindOneAndReplace<'_, T>

Atomically finds up to one document in the collection matching filter and replaces it with replacement.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<Option<T>>.

These methods can be chained before .await to set options:

Source

pub fn insert_many( &self, docs: impl IntoIterator<Item = impl Borrow<T>>, ) -> InsertMany<'_>

Inserts the data in docs into the collection.

Note that this method accepts both owned and borrowed values, so the input documents do not need to be cloned in order to be passed in.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<InsertManyResult>.

These methods can be chained before .await to set options:

Source

pub fn insert_one(&self, doc: impl Borrow<T>) -> InsertOne<'_>

Inserts doc into the collection.

Note that either an owned or borrowed value can be inserted here, so the input document does not need to be cloned to be passed in.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<InsertOneResult>.

These methods can be chained before .await to set options:

Source

pub fn list_indexes(&self) -> ListIndexes<'_>

Lists all indexes on this collection.

await will return Result<Cursor<IndexModel>> (or Result<SessionCursor<IndexModel>> if a ClientSession is provided).

These methods can be chained before .await to set options:

Source

pub fn list_index_names(&self) -> ListIndexes<'_, ListNames>

Gets the names of all indexes on the collection.

await will return Result<Vec<String>>.

These methods can be chained before .await to set options:

Source

pub fn replace_one( &self, query: Document, replacement: impl Borrow<T>, ) -> ReplaceOne<'_>

Replaces up to one document matching query in the collection with replacement.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<UpdateResult>.

These methods can be chained before .await to set options:

Source

pub fn create_search_indexes( &self, models: impl IntoIterator<Item = SearchIndexModel>, ) -> CreateSearchIndex<'_, Multiple>

Creates multiple search indexes on the collection.

await will return Result<Vec<String>>.

These methods can be chained before .await to set options:

Source

pub fn create_search_index( &self, model: SearchIndexModel, ) -> CreateSearchIndex<'_, Single>

Convenience method for creating a single search index.

await will return Result<String>.

These methods can be chained before .await to set options:

Source

pub fn update_search_index( &self, name: impl Into<String>, definition: Document, ) -> UpdateSearchIndex<'_>

Updates the search index with the given name to use the provided definition.

await will return [Result<()>].

These methods can be chained before .await to set options:

Source

pub fn drop_search_index(&self, name: impl Into<String>) -> DropSearchIndex<'_>

Drops the search index with the given name.

await will return [Result<()>].

These methods can be chained before .await to set options:

Source

pub fn list_search_indexes(&self) -> ListSearchIndexes<'_>

Gets index information for one or more search indexes in the collection.

If name is not specified, information for all indexes on the specified collection will be returned.

await will return Result<Cursor<Document>>.

These methods can be chained before .await to set options:

Source

pub fn update_many( &self, query: Document, update: impl Into<UpdateModifications>, ) -> Update<'_>

Updates all documents matching query in the collection.

Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+. See the official MongoDB documentation for more information on specifying updates.

await will return Result<UpdateResult>.

These methods can be chained before .await to set options:

Source

pub fn update_one( &self, query: Document, update: impl Into<UpdateModifications>, ) -> Update<'_>

Updates up to one document matching query in the collection.

Both Document and Vec<Document> implement Into<UpdateModifications>, so either can be passed in place of constructing the enum case. Note: pipeline updates are only supported in MongoDB 4.2+. See the official MongoDB documentation for more information on specifying updates.

This operation will retry once upon failure if the connection and encountered error support retryability. See the documentation here for more information on retryable writes.

await will return Result<UpdateResult>.

These methods can be chained before .await to set options:

Source

pub fn watch(&self) -> Watch<'_, T>

Starts a new ChangeStream that receives events for all changes in this collection. A ChangeStream cannot be started on system collections.

See the documentation here on change streams.

Change streams require either a “majority” read concern or no read concern. Anything else will cause a server error.

await will return Result<ChangeStream<ChangeStreamEvent<T>>> or Result<SessionChangeStream<ChangeStreamEvent<T>>> if a ClientSession has been provided.

These methods can be chained before .await to set options:

Source

pub fn insert_one_model( &self, document: impl Borrow<T>, ) -> Result<InsertOneModel, Error>

Constructs an InsertOneModel with this collection’s namespace by serializing the provided value into a Document. Returns an error if serialization fails.

Note that the returned value must be provided to bulk_write for the insert to be performed.

Source

pub fn replace_one_model( &self, filter: Document, replacement: impl Borrow<T>, ) -> Result<ReplaceOneModel, Error>

Constructs a ReplaceOneModel with this collection’s namespace by serializing the provided value into a Document. Returns an error if serialization fails.

Note that the returned value must be provided to bulk_write for the replace to be performed.

Source

pub fn clone_with_type<U>(&self) -> Collection<U>
where U: Send + Sync,

Gets a clone of the Collection with a different type U.

Source

pub fn client(&self) -> &Client

Get the Client that this collection descended from.

Source

pub fn name(&self) -> &str

Gets the name of the Collection.

Source

pub fn namespace(&self) -> Namespace

Gets the namespace of the Collection.

The namespace of a MongoDB collection is the concatenation of the name of the database containing it, the ‘.’ character, and the name of the collection itself. For example, if a collection named “bar” is created in a database named “foo”, the namespace of the collection is “foo.bar”.

Source

pub fn selection_criteria(&self) -> Option<&SelectionCriteria>

Gets the selection criteria of the Collection.

Source

pub fn read_concern(&self) -> Option<&ReadConcern>

Gets the read concern of the Collection.

Source

pub fn write_concern(&self) -> Option<&WriteConcern>

Gets the write concern of the Collection.

Trait Implementations§

Source§

impl<M: Model> Clone for Repository<M>

Source§

fn clone(&self) -> Self

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<M: Debug + Model> Debug for Repository<M>

Source§

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

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

impl<M: Model> Deref for Repository<M>

Source§

type Target = Collection<M>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Collection<M>

Dereferences the value.

Auto Trait Implementations§

§

impl<M> Freeze for Repository<M>

§

impl<M> !RefUnwindSafe for Repository<M>

§

impl<M> Send for Repository<M>

§

impl<M> Sync for Repository<M>

§

impl<M> Unpin for Repository<M>

§

impl<M> !UnwindSafe for Repository<M>

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> 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, dest: *mut u8)

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

impl<T> Conv for T

Source§

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

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

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

Attempts to convert self into T using TryInto<T>. 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.
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
Source§

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