DataContract

Enum DataContract 

Source
pub enum DataContract {
    V0(DataContractV0),
    V1(DataContractV1),
}
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

Variants§

Implementations§

Source§

impl DataContract

Source

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

Generate data contract id based on owner id and identity nonce

Source§

impl DataContract

Source

pub fn equal_ignoring_time_fields( &self, other: &DataContract, platform_version: &PlatformVersion, ) -> Result<bool, ProtocolError>

Compares two DataContract instances while ignoring time-related fields.

This function checks for equality while excluding:

  • created_at
  • updated_at
  • created_at_block_height
  • updated_at_block_height
  • created_at_epoch
  • updated_at_epoch
§Arguments
  • other: A reference to another DataContract to compare against.
§Returns
  • true if all non-time fields match, otherwise false.
Source§

impl DataContract

Source

pub fn registration_cost( &self, platform_version: &PlatformVersion, ) -> Result<u64, ProtocolError>

Returns the registration cost of the data contract based on the current platform version and the number of associated search keywords.

This method dispatches to a version-specific implementation based on the platform version configuration. If the version is unrecognized, it returns a version mismatch error.

§Arguments
  • platform_version: A reference to the platform version, used to determine which registration cost algorithm to apply.
§Returns
  • Ok(u64): The total registration cost in credits for this contract.
  • Err(ProtocolError): If the platform version is unrecognized or if the fee computation overflows.
§Version Behavior
  • Version 0: Always returns 0 (used before protocol version 9, ie before 2.0, where registration cost was not charged).
  • Version 1: Uses a detailed cost model based on document types, indexes, tokens, and keyword count.
Source§

impl DataContract

Source

pub fn validate_groups( groups: &BTreeMap<GroupContractPosition, Group>, platform_version: &PlatformVersion, ) -> Result<SimpleConsensusValidationResult, ProtocolError>

Validates the provided groups to ensure they meet the requirements for data contracts.

§Parameters
  • groups: A reference to a BTreeMap of group contract positions (GroupContractPosition) mapped to their corresponding Group objects. These represent the groups associated with the data contract.
  • platform_version: A reference to the PlatformVersion object specifying the version of the platform and determining which validation method to use.
§Returns
  • Ok(SimpleConsensusValidationResult) if all the groups pass validation:
    • Group contract positions must be contiguous, i.e., no gaps between positions.
    • Each group must meet its individual validation criteria.
  • Err(ProtocolError) if:
    • An unknown or unsupported platform version is provided.
    • Validation of any group fails.
§Behavior
  • Delegates the actual validation logic to the appropriate versioned implementation (validate_groups_v0) based on the provided platform version.
  • If an unknown platform version is encountered, a ProtocolError::UnknownVersionMismatch is returned.
§Errors
  • Returns a ProtocolError::UnknownVersionMismatch if the platform version is not recognized.
  • Returns validation errors for:
    • Non-contiguous group contract positions (NonContiguousContractGroupPositionsError).
    • Invalid individual group configurations (e.g., power-related errors or exceeding member limits).
Source§

impl DataContract

Source

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

Source§

impl DataContract

Source§

impl DataContract

Source

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

Source

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

Source

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

Source

pub fn as_v1(&self) -> Option<&DataContractV1>

Source

pub fn as_v1_mut(&mut self) -> Option<&mut DataContractV1>

Source

pub fn into_v1(self) -> Option<DataContractV1>

Source

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

Source

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

Trait Implementations§

Source§

impl Clone for DataContract

Source§

fn clone(&self) -> DataContract

Returns a duplicate 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 DataContractDocumentValidationMethodsV0 for DataContract

Source§

impl DataContractJsonConversionMethodsV0 for DataContract

Source§

fn from_json( json_value: JsonValue, full_validation: bool, platform_version: &PlatformVersion, ) -> Result<Self, ProtocolError>
where Self: Sized,

Source§

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

Returns Data Contract as a JSON Value
Source§

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

Returns Data Contract as a JSON Value
Source§

impl DataContractSchemaMethodsV0 for DataContract

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl DataContractUpdateValidationMethodsV0 for DataContract

Source§

fn validate_update( &self, data_contract: &DataContract, block_info: &BlockInfo, platform_version: &PlatformVersion, ) -> Result<SimpleConsensusValidationResult, ProtocolError>

Source§

impl DataContractV0Getters for DataContract

Source§

fn id(&self) -> Identifier

Returns the unique identifier for the data contract.
Source§

fn id_ref(&self) -> &Identifier

Source§

fn system_version_type(&self) -> u16

Source§

fn version(&self) -> u32

Returns the version of this data contract.
Source§

fn owner_id(&self) -> Identifier

Returns the identifier of the contract owner.
Source§

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

Source§

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

Source§

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

Returns the document type for the given document name.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

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

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

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

fn config(&self) -> &DataContractConfig

Returns the internal configuration for the contract.
Source§

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

Returns the internal configuration for the contract as mutable.
Source§

impl DataContractV0Setters for DataContract

Source§

fn set_id(&mut self, id: Identifier)

Sets the unique identifier for the data contract.
Source§

fn set_version(&mut self, version: u32)

Sets the version of this data contract.
Source§

fn increment_version(&mut self)

Source§

fn set_owner_id(&mut self, owner_id: Identifier)

Sets the identifier of the contract owner.
Source§

fn set_config(&mut self, config: DataContractConfig)

Sets the internal configuration for the contract.
Source§

impl DataContractV1Getters for DataContract

Implementing DataContractV1Getters for DataContract

Source§

fn groups(&self) -> &BTreeMap<GroupContractPosition, Group>

Returns a reference to the groups map.

Source§

fn groups_mut(&mut self) -> Option<&mut BTreeMap<GroupContractPosition, Group>>

Returns a mutable reference to the groups map. Returns None for V0 since it doesn’t have groups.

Source§

fn expected_group( &self, position: GroupContractPosition, ) -> Result<&Group, ProtocolError>

Returns a reference to a group or an error. Returns an Error for V0 since it doesn’t have groups.

Source§

fn tokens(&self) -> &BTreeMap<TokenContractPosition, TokenConfiguration>

Returns a reference to the tokens map.

Source§

fn tokens_mut( &mut self, ) -> Option<&mut BTreeMap<TokenContractPosition, TokenConfiguration>>

Returns a mutable reference to the tokens map. Returns None for V0 since it doesn’t have tokens.

Source§

fn expected_token_configuration( &self, position: TokenContractPosition, ) -> Result<&TokenConfiguration, ProtocolError>

Returns a mutable reference to a token configuration or an error. Returns an Error for V0 since it doesn’t have tokens.

Source§

fn token_configuration_mut( &mut self, position: TokenContractPosition, ) -> Option<&mut TokenConfiguration>

Returns a mutable reference to a token configuration Returns None for V0 since it doesn’t have tokens.

Source§

fn created_at(&self) -> Option<TimestampMillis>

Returns the timestamp in milliseconds when the contract was created.

Source§

fn updated_at(&self) -> Option<TimestampMillis>

Returns the timestamp in milliseconds when the contract was last updated.

Source§

fn created_at_block_height(&self) -> Option<BlockHeight>

Returns the block height at which the contract was created.

Source§

fn updated_at_block_height(&self) -> Option<BlockHeight>

Returns the block height at which the contract was last updated.

Source§

fn created_at_epoch(&self) -> Option<EpochIndex>

Returns the epoch at which the contract was created.

Source§

fn updated_at_epoch(&self) -> Option<EpochIndex>

Returns the epoch at which the contract was last updated.

Source§

fn token_id(&self, position: TokenContractPosition) -> Option<Identifier>

Returns the token id at a certain position.
Source§

fn keywords(&self) -> &Vec<String>

Returns the keywords for the contract.
Source§

fn keywords_mut(&mut self) -> Option<&mut Vec<String>>

Returns a mutable reference to the keywords for the contract.
Source§

fn description(&self) -> Option<&String>

Returns the description for the contract.
Source§

fn description_mut(&mut self) -> Option<&mut String>

Returns a mutable reference to the description for the contract.
Source§

impl DataContractV1Setters for DataContract

Source§

fn set_groups(&mut self, groups: BTreeMap<GroupContractPosition, Group>)

Sets the groups map for the data contract.

Source§

fn set_tokens( &mut self, tokens: BTreeMap<TokenContractPosition, TokenConfiguration>, )

Sets the tokens map for the data contract.

Source§

fn add_group(&mut self, position: GroupContractPosition, group: Group)

Adds or updates a single group in the groups map.

Source§

fn add_token(&mut self, id: TokenContractPosition, token: TokenConfiguration)

Adds or updates a single token configuration in the tokens map.

Source§

fn set_created_at(&mut self, created_at: Option<TimestampMillis>)

Sets the timestamp in milliseconds when the contract was created.

Source§

fn set_updated_at(&mut self, updated_at: Option<TimestampMillis>)

Sets the timestamp in milliseconds when the contract was last updated.

Source§

fn set_created_at_block_height(&mut self, block_height: Option<BlockHeight>)

Sets the block height at which the contract was created.

Source§

fn set_updated_at_block_height(&mut self, block_height: Option<BlockHeight>)

Sets the block height at which the contract was last updated.

Source§

fn set_created_at_epoch(&mut self, epoch: Option<EpochIndex>)

Sets the epoch at which the contract was created.

Source§

fn set_updated_at_epoch(&mut self, epoch: Option<EpochIndex>)

Sets the epoch at which the contract was last updated.

Source§

fn set_keywords(&mut self, keywords: Vec<String>)

Sets the keywords for the contract.

Source§

fn set_description(&mut self, description: Option<String>)

Sets the description for the contract.

Source§

impl DataContractValueConversionMethodsV0 for DataContract

Source§

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

Source§

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

Source§

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

Source§

impl Debug for DataContract

Source§

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

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

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

Source§

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

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

impl From<CreatedDataContract> for DataContract

Source§

fn from(value: CreatedDataContract) -> Self

Converts to this type from the input type.
Source§

impl From<DataContractV0> for DataContract

Source§

fn from(value: DataContractV0) -> Self

Converts to this type from the input type.
Source§

impl From<DataContractV1> for DataContract

Source§

fn from(value: DataContractV1) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for DataContract

Source§

fn eq(&self, other: &DataContract) -> 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.
Source§

impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract

Source§

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

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

impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for DataContract

Source§

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

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

impl PlatformLimitDeserializableFromVersionedStructure for DataContract

Source§

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

Source§

impl PlatformSerializableWithPlatformVersion for DataContract

Source§

type Error = ProtocolError

Source§

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

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 Serialize for DataContract

Source§

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

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

impl TryFrom<StateTransitionProofResult> for DataContract

Source§

type Error = TryIntoError<StateTransitionProofResult>

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

fn try_from(value: StateTransitionProofResult) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFromPlatformVersioned<&DataContract> for DataContractInSerializationFormat

Source§

type Error = ProtocolError

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

fn try_from_platform_versioned( value: &DataContract, platform_version: &PlatformVersion, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFromPlatformVersioned<DataContract> for DataContractCreateTransition

Source§

type Error = ProtocolError

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

fn try_from_platform_versioned( value: DataContract, platform_version: &PlatformVersion, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFromPlatformVersioned<DataContract> for DataContractCreateTransitionV0

Source§

type Error = ProtocolError

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

fn try_from_platform_versioned( value: DataContract, platform_version: &PlatformVersion, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFromPlatformVersioned<DataContract> for DataContractInSerializationFormat

Source§

type Error = ProtocolError

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

fn try_from_platform_versioned( value: DataContract, platform_version: &PlatformVersion, ) -> Result<Self, Self::Error>

Performs the conversion.
Source§

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

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

impl<T, U> IntoOnNetwork<U> for T
where U: FromOnNetwork<T>,

§

fn into_on_network(self, network: Network) -> U

Calls U::from_on_network(self).

§

impl<T, U> IntoPlatformVersioned<U> for T

§

fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U

Performs the conversion.
§

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

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
§

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,

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
§

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

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

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

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<T, U> TryIntoPlatformVersioned<U> for 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<T, U> TryIntoWithBlockHashLookup<U> for T
where U: TryFromWithBlockHashLookup<T>,

§

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

§

fn try_into_with_block_hash_lookup<F>( self, block_hash_lookup: F, network: Network, ) -> Result<U, <T as TryIntoWithBlockHashLookup<U>>::Error>
where F: Fn(&BlockHash) -> Option<u32>,

Converts self into T, using a block hash lookup function.
§

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