Struct MoveObject
pub struct MoveObject { /* private fields */ }Expand description
A move struct
§BCS
The BCS serialized form for this type is defined by the following ABNF:
move-struct = compressed-struct-tag u64 bytes
compressed-struct-tag = other-struct-type / gas-coin-type / staked-iota-type / coin-type
other-struct-type = %d00 struct-tag
gas-coin-type = %d01
staked-iota-type = %d02
coin-type = %d03 type-tag
; The first 32 bytes of the `bytes` contents are the object's object-id.Implementations§
§impl MoveStruct
impl MoveStruct
pub fn new(
object_type: MoveObjectType,
version: Version,
contents: Vec<u8>,
) -> Result<MoveStruct, MoveStructContentsError>
pub fn new( object_type: MoveObjectType, version: Version, contents: Vec<u8>, ) -> Result<MoveStruct, MoveStructContentsError>
Creates a new MoveStruct.
§Errors
Returns an error if contents is shorter than ObjectId::LENGTH
bytes, since every Move object must contain its ObjectId as the
leading bytes.
pub fn object_type(&self) -> &MoveObjectType
pub fn object_type(&self) -> &MoveObjectType
Returns the type of this Move object.
pub fn struct_tag(&self) -> &StructTag
pub fn struct_tag(&self) -> &StructTag
Returns the object type as a StructTag reference.
pub fn is_struct_tag(&self, s: &StructTag) -> bool
pub fn is_struct_tag(&self, s: &StructTag) -> bool
Returns true if the object’s type matches the given StructTag.
pub fn id(&self) -> ObjectId
pub fn id(&self) -> ObjectId
Returns the object’s ID, extracted from the BCS-encoded contents.
This is always valid because the constructor guarantees that contents
is at least ObjectId::LENGTH bytes long.
pub fn set_version(&mut self, version: Version)
pub fn set_version(&mut self, version: Version)
Sets the version (lamport timestamp) of this object.
pub fn set_object_type(&mut self, object_type: MoveObjectType)
pub fn set_object_type(&mut self, object_type: MoveObjectType)
Sets the type of this object.
The caller must ensure the existing contents are a
valid BCS encoding of the new object_type; this is not verified.
pub fn set_contents(
&mut self,
contents: Vec<u8>,
) -> Result<(), MoveStructContentsError>
pub fn set_contents( &mut self, contents: Vec<u8>, ) -> Result<(), MoveStructContentsError>
Replaces the BCS-encoded contents of this object.
The caller must ensure the new contents are a valid BCS encoding of the
object’s object_type; this is not verified.
§Errors
Returns an error if contents is shorter than ObjectId::LENGTH
bytes.
pub fn into_contents(self) -> Vec<u8> ⓘ
pub fn into_contents(self) -> Vec<u8> ⓘ
Consumes the object and returns the raw BCS-encoded contents.
pub fn into_parts(self) -> (MoveObjectType, Version, Vec<u8>)
pub fn into_parts(self) -> (MoveObjectType, Version, Vec<u8>)
Consumes the object and returns its type, version, and raw contents.
pub fn to_rust<'de, T>(&'de self) -> Option<T>where
T: Deserialize<'de>,
pub fn to_rust<'de, T>(&'de self) -> Option<T>where
T: Deserialize<'de>,
Deserializes the BCS-encoded contents into a Rust type.
Trait Implementations§
§impl Arbitrary for MoveStruct
impl Arbitrary for MoveStruct
§type Parameters = ()
type Parameters = ()
arbitrary_with accepts for configuration
of the generated Strategy. Parameters must implement Default.§type Strategy = BoxedStrategy<MoveStruct>
type Strategy = BoxedStrategy<MoveStruct>
Strategy used to generate values of type Self.§fn arbitrary_with(
args_shared: <MoveStruct as Arbitrary>::Parameters,
) -> <MoveStruct as Arbitrary>::Strategy
fn arbitrary_with( args_shared: <MoveStruct as Arbitrary>::Parameters, ) -> <MoveStruct as Arbitrary>::Strategy
§impl Clone for MoveStruct
impl Clone for MoveStruct
§fn clone(&self) -> MoveStruct
fn clone(&self) -> MoveStruct
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for MoveStruct
impl Debug for MoveStruct
§impl<'de> Deserialize<'de> for MoveStruct
impl<'de> Deserialize<'de> for MoveStruct
§fn deserialize<D>(
deserializer: D,
) -> Result<MoveStruct, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<MoveStruct, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
§impl Hash for MoveStruct
impl Hash for MoveStruct
Source§impl MoveObjectExt for MoveObject
impl MoveObjectExt for MoveObject
Source§fn new_from_execution(
tag: StructTag,
version: SequenceNumber,
contents: Vec<u8>,
protocol_config: &ProtocolConfig,
) -> Result<Self, ExecutionError>
fn new_from_execution( tag: StructTag, version: SequenceNumber, contents: Vec<u8>, protocol_config: &ProtocolConfig, ) -> Result<Self, ExecutionError>
Creates a new Move object of type tag with BCS encoded bytes in
contents.
Source§fn new_from_execution_with_limit(
tag: StructTag,
version: SequenceNumber,
contents: Vec<u8>,
max_move_object_size: u64,
) -> Result<Self, ExecutionError>
fn new_from_execution_with_limit( tag: StructTag, version: SequenceNumber, contents: Vec<u8>, max_move_object_size: u64, ) -> Result<Self, ExecutionError>
Creates a new Move object of type tag with BCS encoded bytes in
contents. It allows to set a max_move_object_size for that.
Source§fn get_coin_value_unchecked(&self) -> u64
fn get_coin_value_unchecked(&self) -> u64
Return the value: u64 field of a Coin<T> type.
Useful for reading the coin without deserializing the object into a Move
value. It is the caller’s responsibility to check that self is a coin.
This function may panic or do something unexpected otherwise.
Source§fn set_coin_value_unchecked(&mut self, value: u64)
fn set_coin_value_unchecked(&mut self, value: u64)
Update the value: u64 field of a Coin<T> type.
Useful for updating the coin without deserializing the object into a
Move value. It is the caller’s responsibility to check that self is a
coin.
This function may panic or do something unexpected otherwise.
Source§fn set_clock_timestamp_ms_unchecked(&mut self, timestamp_ms: u64)
fn set_clock_timestamp_ms_unchecked(&mut self, timestamp_ms: u64)
Update the timestamp_ms: u64 field of the Clock type.
Panics if the object isn’t a Clock.
Source§fn update_contents(
&mut self,
new_contents: Vec<u8>,
protocol_config: &ProtocolConfig,
) -> Result<(), ExecutionError>
fn update_contents( &mut self, new_contents: Vec<u8>, protocol_config: &ProtocolConfig, ) -> Result<(), ExecutionError>
Update the contents of this object but does not increment its version
Source§fn increment_version_to(&mut self, next: SequenceNumber)
fn increment_version_to(&mut self, next: SequenceNumber)
Sets the version of this object to a new value which is assumed to be higher (and checked to be higher in debug).
Source§fn decrement_version_to(&mut self, prev: SequenceNumber)
fn decrement_version_to(&mut self, prev: SequenceNumber)
Sets the version to a lower value (checked in debug).
Source§fn get_layout(
&self,
resolver: &impl GetModule,
) -> Result<MoveStructLayout, IotaError>
fn get_layout( &self, resolver: &impl GetModule, ) -> Result<MoveStructLayout, IotaError>
Get a MoveStructLayout for self.
The resolver value must contain the module that declares
self.object_type and the (transitive) dependencies of
self.object_type in order for this to succeed. Failure will result
in an ObjectSerializationError
Source§fn to_move_struct(
&self,
layout: &MoveStructLayout,
) -> Result<MoveStruct, IotaError>
fn to_move_struct( &self, layout: &MoveStructLayout, ) -> Result<MoveStruct, IotaError>
Convert self to the JSON representation dictated by layout.
Source§fn object_size_for_gas_metering(&self) -> usize
fn object_size_for_gas_metering(&self) -> usize
Approximate size of the object in bytes. This is used for gas metering. For the type tag field, we serialize it on the spot to get the accurate size. This should not be very expensive since the type tag is usually simple, and we only do this once per object being mutated.
Source§fn get_total_iota(
&self,
layout_resolver: &mut dyn LayoutResolver,
) -> Result<u64, IotaError>
fn get_total_iota( &self, layout_resolver: &mut dyn LayoutResolver, ) -> Result<u64, IotaError>
Get the total amount of IOTA embedded in self. Intended for testing
purposes
Source§fn get_coin_balances(
&self,
layout_resolver: &mut dyn LayoutResolver,
) -> Result<BTreeMap<TypeTag, u64>, IotaError>
fn get_coin_balances( &self, layout_resolver: &mut dyn LayoutResolver, ) -> Result<BTreeMap<TypeTag, u64>, IotaError>
Get the total balances for all Coin<T> embedded in self.
fn new_gas_coin(version: SequenceNumber, id: ObjectID, value: u64) -> Self
fn new_coin( coin_type: TypeTag, version: SequenceNumber, id: ObjectID, value: u64, ) -> Self
fn update_contents_with_limit( &mut self, new_contents: Vec<u8>, max_move_object_size: u64, ) -> Result<(), ExecutionError>
fn get_struct_layout_from_struct_tag( struct_tag: StructTag, resolver: &impl GetModule, ) -> Result<MoveStructLayout, IotaError>
§impl PartialEq for MoveStruct
impl PartialEq for MoveStruct
§impl Serialize for MoveStruct
impl Serialize for MoveStruct
§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Source§impl TryFrom<&MoveStruct> for GasCoin
impl TryFrom<&MoveStruct> for GasCoin
Source§type Error = ExecutionError
type Error = ExecutionError
Source§fn try_from(value: &MoveObject) -> Result<GasCoin, ExecutionError>
fn try_from(value: &MoveObject) -> Result<GasCoin, ExecutionError>
impl Eq for MoveStruct
impl StructuralPartialEq for MoveStruct
Auto Trait Implementations§
impl !Freeze for MoveStruct
impl RefUnwindSafe for MoveStruct
impl Send for MoveStruct
impl Sync for MoveStruct
impl Unpin for MoveStruct
impl UnwindSafe for MoveStruct
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
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) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
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
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.