Enum dash_sdk::platform::DataContract

pub enum DataContract {
    V0(DataContractV0),
}
Expand description

Understanding Data Contract versioning Data contract versioning is both for the code structure and for serialization.

The code structure is what is used in code to verify documents and is used in memory There is generally only one code structure running at any given time, except in the case we are switching protocol versions.

There can be a lot of serialization versions that are active, and serialization versions should generally always be supported. This is because when we store something as version 1. 10 years down the line when we unserialize this contract it will still be in version 1. Deserialization of a data contract serialized in that version should be translated to the current code structure version.

There are some scenarios to consider,

One such scenario is that the serialization version does not contain enough information for the current code structure version.

Depending on the situation one of the following occurs:

  • the contract structure can imply missing parts based on default behavior
  • the contract structure can disable certain features dependant on missing information
  • the contract might be unusable until it is updated by the owner

Here we use PlatformSerialize, because

Variants§

§

V0(DataContractV0)

Implementations§

§

impl DataContract

pub fn generate_data_contract_id_v0( owner_id: impl AsRef<[u8]>, identity_nonce: u64, ) -> Identifier

Generate data contract id based on owner id and identity nonce

§

impl DataContract

pub fn try_from_platform_versioned( value: DataContractInSerializationFormat, full_validation: bool, validation_operations: &mut Vec<ProtocolValidationOperation>, platform_version: &PlatformVersion, ) -> Result<DataContract, ProtocolError>

§

impl DataContract

pub fn feature_version(&self) -> u16

§

impl DataContract

pub fn as_v0(&self) -> Option<&DataContractV0>

pub fn as_v0_mut(&mut self) -> Option<&mut DataContractV0>

pub fn into_v0(self) -> Option<DataContractV0>

pub fn check_version_is_active( protocol_version: u32, data_contract_system_version: u16, ) -> Result<bool, ProtocolError>

pub fn hash( &self, platform_version: &PlatformVersion, ) -> Result<Vec<u8>, ProtocolError>

Trait Implementations§

§

impl Clone for DataContract

§

fn clone(&self) -> DataContract

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
§

impl DataContractDocumentValidationMethodsV0 for DataContract

§

fn validate_document( &self, name: &str, document: &Document, platform_version: &PlatformVersion, ) -> Result<ValidationResult<(), ConsensusError>, ProtocolError>

§

fn validate_document_properties( &self, name: &str, properties: Value, platform_version: &PlatformVersion, ) -> Result<ValidationResult<(), ConsensusError>, ProtocolError>

§

impl DataContractJsonConversionMethodsV0 for DataContract

§

fn from_json( json_value: Value, full_validation: bool, platform_version: &PlatformVersion, ) -> Result<DataContract, ProtocolError>

§

fn to_json( &self, platform_version: &PlatformVersion, ) -> Result<Value, ProtocolError>

Returns Data Contract as a JSON Value
§

fn to_validating_json( &self, platform_version: &PlatformVersion, ) -> Result<Value, ProtocolError>

Returns Data Contract as a JSON Value
§

impl DataContractPaths for DataContract

§

fn root_path(&self) -> [&[u8]; 2]

The root path, under this there should be the documents area and the contract itself
§

fn documents_path(&self) -> [&[u8]; 3]

The documents path, under this you should have the various document types
§

fn document_type_path<'a>( &'a self, document_type_name: &'a str, ) -> [&'a [u8]; 4]

The document type path, this is based on the document type name
§

fn documents_primary_key_path<'a>( &'a self, document_type_name: &'a str, ) -> [&'a [u8]; 5]

The document primary key path, this is under the document type
§

fn documents_with_history_primary_key_path<'a>( &'a self, document_type_name: &'a str, id: &'a [u8], ) -> [&'a [u8]; 6]

The underlying storage for documents that keep history
§

impl DataContractSchemaMethodsV0 for DataContract

§

fn set_document_schemas( &mut self, schemas: BTreeMap<String, Value>, defs: Option<BTreeMap<String, Value>>, full_validation: bool, validation_operations: &mut Vec<ProtocolValidationOperation>, platform_version: &PlatformVersion, ) -> Result<(), ProtocolError>

§

fn set_document_schema( &mut self, name: &str, schema: Value, full_validation: bool, validation_operations: &mut Vec<ProtocolValidationOperation>, platform_version: &PlatformVersion, ) -> Result<(), ProtocolError>

§

fn document_schemas(&self) -> BTreeMap<String, &Value>

§

fn schema_defs(&self) -> Option<&BTreeMap<String, Value>>

§

fn set_schema_defs( &mut self, defs: Option<BTreeMap<String, Value>>, full_validation: bool, validation_operations: &mut Vec<ProtocolValidationOperation>, platform_version: &PlatformVersion, ) -> Result<(), ProtocolError>

§

impl DataContractUpdateValidationMethodsV0 for DataContract

§

fn validate_update( &self, data_contract: &DataContract, platform_version: &PlatformVersion, ) -> Result<ValidationResult<(), ConsensusError>, ProtocolError>

§

impl DataContractV0Getters for DataContract

§

fn id(&self) -> Identifier

Returns the unique identifier for the data contract.
§

fn id_ref(&self) -> &Identifier

§

fn version(&self) -> u32

Returns the version of this data contract.
§

fn owner_id(&self) -> Identifier

Returns the identifier of the contract owner.
§

fn document_type_cloned_for_name( &self, name: &str, ) -> Result<DocumentType, DataContractError>

§

fn document_type_borrowed_for_name( &self, name: &str, ) -> Result<&DocumentType, DataContractError>

§

fn document_type_for_name( &self, name: &str, ) -> Result<DocumentTypeRef<'_>, DataContractError>

Returns the document type for the given document name.
§

fn document_type_optional_for_name( &self, name: &str, ) -> Option<DocumentTypeRef<'_>>

§

fn document_type_cloned_optional_for_name( &self, name: &str, ) -> Option<DocumentType>

§

fn has_document_type_for_name(&self, name: &str) -> bool

§

fn document_types_with_contested_indexes( &self, ) -> BTreeMap<&String, &DocumentType>

§

fn document_types(&self) -> &BTreeMap<String, DocumentType>

Returns a mapping of document names to their corresponding document types.
§

fn document_types_mut(&mut self) -> &mut BTreeMap<String, DocumentType>

Returns a mapping of document names to their corresponding document types as mutable.
§

fn metadata(&self) -> Option<&Metadata>

Returns optional metadata associated with the contract.
§

fn metadata_mut(&mut self) -> Option<&mut Metadata>

Returns a mutable reference to the optional metadata associated with the contract.
§

fn config(&self) -> &DataContractConfig

Returns the internal configuration for the contract.
§

fn config_mut(&mut self) -> &mut DataContractConfig

Returns the internal configuration for the contract as mutable.
§

impl DataContractV0Setters for DataContract

§

fn set_id(&mut self, id: Identifier)

Sets the unique identifier for the data contract.
§

fn set_version(&mut self, version: u32)

Sets the version of this data contract.
§

fn increment_version(&mut self)

§

fn set_owner_id(&mut self, owner_id: Identifier)

Sets the identifier of the contract owner.
§

fn set_metadata(&mut self, metadata: Option<Metadata>)

Sets the optional metadata associated with the contract.
§

fn set_config(&mut self, config: DataContractConfig)

Sets the internal configuration for the contract.
§

impl DataContractValueConversionMethodsV0 for DataContract

§

fn from_value( raw_object: Value, full_validation: bool, platform_version: &PlatformVersion, ) -> Result<DataContract, ProtocolError>

§

fn to_value( &self, platform_version: &PlatformVersion, ) -> Result<Value, ProtocolError>

§

fn into_value( self, platform_version: &PlatformVersion, ) -> Result<Value, ProtocolError>

§

impl Debug for DataContract

§

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

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for DataContract

§

fn deserialize<D>( deserializer: D, ) -> Result<DataContract, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Fetch for DataContract

§

type Request = GetDataContractRequest

Type of request used to fetch data from Platform. Read more
source§

fn fetch<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, ) -> Pin<Box<dyn Future<Output = Result<Option<Self>, Error>> + Send + 'async_trait>>
where Q: 'async_trait + Query<<Self as Fetch>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch single object from Platform. Read more
source§

fn fetch_with_metadata<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, settings: Option<RequestSettings>, ) -> Pin<Box<dyn Future<Output = Result<(Option<Self>, ResponseMetadata), Error>> + Send + 'async_trait>>
where Q: 'async_trait + Query<<Self as Fetch>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch single object from Platform with metadata. Read more
source§

fn fetch_with_metadata_and_proof<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, settings: Option<RequestSettings>, ) -> Pin<Box<dyn Future<Output = Result<(Option<Self>, ResponseMetadata, Proof), Error>> + Send + 'async_trait>>
where Q: 'async_trait + Query<<Self as Fetch>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch single object from Platform with metadata and underlying proof. Read more
source§

fn fetch_with_settings<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, settings: RequestSettings, ) -> Pin<Box<dyn Future<Output = Result<Option<Self>, Error>> + Send + 'async_trait>>
where Q: 'async_trait + Query<<Self as Fetch>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch single object from Platform. Read more
source§

fn fetch_by_identifier<'life0, 'async_trait>( sdk: &'life0 Sdk, id: Identifier, ) -> Pin<Box<dyn Future<Output = Result<Option<Self>, Error>> + Send + 'async_trait>>
where Identifier: Query<<Self as Fetch>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch single object from Platform by identifier. Read more
source§

impl FetchMany<Identifier, BTreeMap<Identifier, Option<DataContract>>> for DataContract

Fetch multiple data contracts.

Returns DataContracts indexed by Identifier.

§Supported query types
  • Vec - list of identifiers of data contracts to fetch
§

type Request = GetDataContractsRequest

Type of request used to fetch multiple objects from Platform. Read more
source§

fn fetch_many<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, ) -> Pin<Box<dyn Future<Output = Result<O, Error>> + Send + 'async_trait>>
where Q: 'async_trait + Query<<Self as FetchMany<K, O>>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch (or search) multiple objects on the Dash Platform Read more
source§

fn fetch_by_identifiers<'life0, 'async_trait, I>( sdk: &'life0 Sdk, identifiers: I, ) -> Pin<Box<dyn Future<Output = Result<O, Error>> + Send + 'async_trait>>
where Vec<Identifier>: Query<<Self as FetchMany<K, O>>::Request>, I: 'async_trait + IntoIterator<Item = Identifier> + Send, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch multiple objects from Platform by their identifiers. Read more
source§

fn fetch_many_with_limit<'life0, 'async_trait, Q>( sdk: &'life0 Sdk, query: Q, limit: u32, ) -> Pin<Box<dyn Future<Output = Result<O, Error>> + Send + 'async_trait>>
where LimitQuery<Q>: Query<<Self as FetchMany<K, O>>::Request>, Q: 'async_trait + Query<<Self as FetchMany<K, O>>::Request>, Self: Send + 'async_trait, 'life0: 'async_trait,

Fetch multiple objects from Platform with limit. Read more
§

impl From<CreatedDataContract> for DataContract

§

fn from(value: CreatedDataContract) -> DataContract

Converts to this type from the input type.
§

impl From<DataContractV0> for DataContract

§

fn from(original: DataContractV0) -> DataContract

Converts to this type from the input type.
§

impl FromProof<GetDataContractRequest> for DataContract

§

type Request = GetDataContractRequest

Request type for which this trait is implemented.
§

type Response = GetDataContractResponse

Response type for which this trait is implemented.
§

fn maybe_from_proof_with_metadata<'a, I, O>( request: I, response: O, _network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<(Option<DataContract>, ResponseMetadata, Proof), Error>
where I: Into<<DataContract as FromProof<GetDataContractRequest>>::Request>, O: Into<<DataContract as FromProof<GetDataContractRequest>>::Response>, DataContract: 'a,

Parse and verify the received proof and retrieve the requested object, if any. Read more
§

fn maybe_from_proof<'a, I, O>( request: I, response: O, network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<Option<Self>, Error>
where I: Into<Self::Request>, O: Into<Self::Response>, Self: Sized + 'a,

Parse and verify the received proof and retrieve the requested object, if any. Read more
§

fn from_proof<'a, I, O>( request: I, response: O, network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<Self, Error>
where I: Into<Self::Request>, O: Into<Self::Response>, Self: Sized + 'a,

Retrieve the requested object from the proof. Read more
§

fn from_proof_with_metadata<'a, I, O>( request: I, response: O, network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<(Self, ResponseMetadata), Error>
where I: Into<Self::Request>, O: Into<Self::Response>, Self: Sized + 'a,

Retrieve the requested object from the proof with metadata. Read more
§

fn from_proof_with_metadata_and_proof<'a, I, O>( request: I, response: O, network: Network, platform_version: &PlatformVersion, provider: &'a dyn ContextProvider, ) -> Result<(Self, ResponseMetadata, Proof), Error>
where I: Into<Self::Request>, O: Into<Self::Response>, Self: Sized + 'a,

Retrieve the requested object from the proof with metadata. Read more
§

impl Length for DataContract

§

fn count_some(&self) -> usize

Return number of non-None elements in the data structure
source§

impl MockResponse for DataContract

source§

fn mock_serialize(&self, sdk: &MockDashPlatformSdk) -> Vec<u8>

Serialize the object to save into expectations Read more
source§

fn mock_deserialize(sdk: &MockDashPlatformSdk, buf: &[u8]) -> Self
where Self: Sized,

Deserialize the object from expectations Read more
§

impl PartialEq for DataContract

§

fn eq(&self, other: &DataContract) -> bool

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

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

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

impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract

§

fn versioned_deserialize_with_bytes_len( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, ) -> Result<(DataContract, usize), ProtocolError>

We will deserialize a versioned structure into a code structure For example we have DataContractV0 and DataContractV1 The system version will tell which version to deserialize into This happens by first deserializing the data into a potentially versioned structure For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 Both of the structures will be valid in perpetuity as they are saved into the state. So from the bytes we could get DataContractSerializationFormatV0. Then the system_version given will tell to transform DataContractSerializationFormatV0 into DataContractV1 (if system version is 1)
§

impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for DataContract

§

fn versioned_deserialize( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, ) -> Result<DataContract, ProtocolError>

We will deserialize a versioned structure into a code structure For example we have DataContractV0 and DataContractV1 The system version will tell which version to deserialize into This happens by first deserializing the data into a potentially versioned structure For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 Both of the structures will be valid in perpetuity as they are saved into the state. So from the bytes we could get DataContractSerializationFormatV0. Then the system_version given will tell to transform DataContractSerializationFormatV0 into DataContractV1 (if system version is 1)
§

impl PlatformLimitDeserializableFromVersionedStructure for DataContract

§

fn versioned_limit_deserialize( data: &[u8], platform_version: &PlatformVersion, ) -> Result<DataContract, ProtocolError>

§

impl PlatformSerializableWithPlatformVersion for DataContract

§

type Error = ProtocolError

§

fn serialize_to_bytes_with_platform_version( &self, platform_version: &PlatformVersion, ) -> Result<Vec<u8>, ProtocolError>

Version based serialization is done based on the desired structure version. For example we have DataContractV0 and DataContractV1 for code based Contracts This means objects that will execute code And we would have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 which are the different ways to serialize the concept of a data contract. The data contract would call versioned_serialize. There should be a converted for each Data contract Version towards each DataContractSerializationFormat
§

fn serialize_consume_to_bytes_with_platform_version( self, platform_version: &PlatformVersion, ) -> Result<Vec<u8>, ProtocolError>

If the trait is not used just do a simple serialize
source§

impl<S: Signer> PutContract<S> for DataContract

source§

fn put_to_platform<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, sdk: &'life1 Sdk, identity_public_key: IdentityPublicKey, signer: &'life2 S, settings: Option<PutSettings>, ) -> Pin<Box<dyn Future<Output = Result<StateTransition, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Puts a document on platform setting settings to None sets default connection behavior
source§

fn wait_for_response<'life0, 'life1, 'async_trait>( &'life0 self, sdk: &'life1 Sdk, state_transition: StateTransition, ) -> Pin<Box<dyn Future<Output = Result<DataContract, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Waits for the response of a state transition after it has been broadcast
source§

fn put_to_platform_and_wait_for_response<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, sdk: &'life1 Sdk, identity_public_key: IdentityPublicKey, signer: &'life2 S, ) -> Pin<Box<dyn Future<Output = Result<DataContract, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Puts a contract on platform and waits for the confirmation proof
§

impl Serialize for DataContract

§

fn serialize<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl StructuralPartialEq for DataContract

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

impl<T> Conv for T

§

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

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

impl<T> CostsExt for T

§

fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>
where Self: Sized,

Wraps any value into a CostContext object with provided costs.
§

fn wrap_fn_cost( self, f: impl FnOnce(&Self) -> OperationCost, ) -> CostContext<Self>
where Self: Sized,

Wraps any value into CostContext object with costs computed using the value getting wrapped.
§

impl<T> FmtForward for T

§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

§

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
§

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

§

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
§

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
§

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
§

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
§

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
§

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

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

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

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

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

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

Immutable access to a value. Read more
§

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

Mutable access to a value. Read more
§

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
§

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
§

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
§

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
§

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
§

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
§

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

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

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

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

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

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

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

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

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

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,

§

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

§

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

§

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

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

§

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

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

fn try_from_versioned( value: U, _grove_version: &GroveVersion, ) -> Result<T, <T as TryFromVersioned<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.
§

impl<T, U> TryIntoPlatformVersioned<U> for T
where U: TryFromPlatformVersioned<T>,

§

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

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

fn try_into_platform_versioned( self, platform_version: &PlatformVersion, ) -> Result<U, <U as TryFromPlatformVersioned<T>>::Error>

Performs the conversion.
§

impl<T, U> TryIntoVersioned<U> for T
where U: TryFromVersioned<T>,

§

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

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

fn try_into_versioned( self, grove_version: &GroveVersion, ) -> Result<U, <U as TryFromVersioned<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
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,