pub struct MoveObject { /* private fields */ }Implementations§
Source§impl MoveObject
 
impl MoveObject
Sourcepub unsafe fn new_from_execution(
    type_: MoveObjectType,
    has_public_transfer: bool,
    version: SequenceNumber,
    contents: Vec<u8>,
    protocol_config: &ProtocolConfig,
    system_mutation: bool,
) -> Result<Self, ExecutionError>
 
pub unsafe fn new_from_execution( type_: MoveObjectType, has_public_transfer: bool, version: SequenceNumber, contents: Vec<u8>, protocol_config: &ProtocolConfig, system_mutation: bool, ) -> Result<Self, ExecutionError>
Creates a new Move object of type type_ with BCS encoded bytes in contents
has_public_transfer is determined by the abilities of the type_, but resolving
the abilities requires the compiled modules of the type_: StructTag.
In other words, has_public_transfer will be the same for all objects of the same type_.
§Safety
This function should ONLY be called if has_public_transfer has been determined by the type_.
Yes, this is a bit of an abuse of the unsafe marker, but bad things will happen if this
is inconsistent
Sourcepub unsafe fn new_from_execution_with_limit(
    type_: MoveObjectType,
    has_public_transfer: bool,
    version: SequenceNumber,
    contents: Vec<u8>,
    max_move_object_size: u64,
) -> Result<Self, ExecutionError>
 
pub unsafe fn new_from_execution_with_limit( type_: MoveObjectType, has_public_transfer: bool, version: SequenceNumber, contents: Vec<u8>, max_move_object_size: u64, ) -> Result<Self, ExecutionError>
§Safety
This function should ONLY be called if has_public_transfer has been determined by the type_
pub fn new_gas_coin(version: SequenceNumber, id: ObjectID, value: u64) -> Self
pub fn new_coin( coin_type: TypeTag, version: SequenceNumber, id: ObjectID, value: u64, ) -> Self
pub fn type_(&self) -> &MoveObjectType
pub fn is_type(&self, s: &StructTag) -> bool
pub fn has_public_transfer(&self) -> bool
pub fn id(&self) -> ObjectID
pub fn id_opt(contents: &[u8]) -> Result<ObjectID, ObjectIDParseError>
Sourcepub fn get_coin_value_unsafe(&self) -> u64
 
pub fn get_coin_value_unsafe(&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.
Sourcepub fn set_coin_value_unsafe(&mut self, value: u64)
 
pub fn set_coin_value_unsafe(&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.
Sourcepub fn set_clock_timestamp_ms_unsafe(&mut self, timestamp_ms: u64)
 
pub fn set_clock_timestamp_ms_unsafe(&mut self, timestamp_ms: u64)
Update the timestamp_ms: u64 field of the Clock type.
Panics if the object isn’t a Clock.
pub fn set_contents_unsafe(&mut self, contents: Vec<u8>)
pub fn is_coin(&self) -> bool
pub fn is_staked_sui(&self) -> bool
pub fn is_clock(&self) -> bool
pub fn version(&self) -> SequenceNumber
pub fn contents_and_type_equal(&self, other: &Self) -> bool
Sourcepub fn increment_version_to(&mut self, next: SequenceNumber)
 
pub 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).
pub fn decrement_version_to(&mut self, prev: SequenceNumber)
pub fn contents(&self) -> &[u8] ⓘ
pub fn into_contents(self) -> Vec<u8> ⓘ
pub fn into_type(self) -> MoveObjectType
pub fn into_inner(self) -> (MoveObjectType, Vec<u8>)
Sourcepub fn get_layout(
    &self,
    resolver: &impl GetModule,
) -> Result<MoveStructLayout, SuiError>
 
pub fn get_layout( &self, resolver: &impl GetModule, ) -> Result<MoveStructLayout, SuiError>
Get a MoveStructLayout for self.
The resolver value must contain the module that declares self.type_ and the (transitive)
dependencies of self.type_ in order for this to succeed. Failure will result in an ObjectSerializationError
pub fn get_struct_layout_from_struct_tag( struct_tag: StructTag, resolver: &impl GetModule, ) -> Result<MoveStructLayout, SuiError>
Sourcepub fn to_move_struct(
    &self,
    layout: &MoveStructLayout,
) -> Result<MoveStruct, SuiError>
 
pub fn to_move_struct( &self, layout: &MoveStructLayout, ) -> Result<MoveStruct, SuiError>
Convert self to the JSON representation dictated by layout.
Sourcepub fn to_move_struct_with_resolver(
    &self,
    resolver: &impl GetModule,
) -> Result<MoveStruct, SuiError>
 
pub fn to_move_struct_with_resolver( &self, resolver: &impl GetModule, ) -> Result<MoveStruct, SuiError>
Convert self to the JSON representation dictated by layout.
pub fn to_rust<'de, T: Deserialize<'de>>(&'de self) -> Option<T>
Sourcepub fn object_size_for_gas_metering(&self) -> usize
 
pub 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.
Sourcepub fn get_total_sui(
    &self,
    layout_resolver: &mut dyn LayoutResolver,
) -> Result<u64, SuiError>
 
pub fn get_total_sui( &self, layout_resolver: &mut dyn LayoutResolver, ) -> Result<u64, SuiError>
Get the total amount of SUI embedded in self. Intended for testing purposes
Trait Implementations§
Source§impl Clone for MoveObject
 
impl Clone for MoveObject
Source§fn clone(&self) -> MoveObject
 
fn clone(&self) -> MoveObject
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MoveObject
 
impl Debug for MoveObject
Source§impl<'de> Deserialize<'de> for MoveObject
 
impl<'de> Deserialize<'de> for MoveObject
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
    __D: Deserializer<'de>,
 
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
    __D: Deserializer<'de>,
Source§impl Hash for MoveObject
 
impl Hash for MoveObject
Source§impl Merge<&MoveObject> for Object
 
impl Merge<&MoveObject> for Object
fn merge(&mut self, source: &MoveObject, mask: &FieldMaskTree)
fn merge_from(source: T, mask: &FieldMaskTree) -> Selfwhere
    Self: Default,
Source§impl PartialEq for MoveObject
 
impl PartialEq for MoveObject
Source§impl Serialize for MoveObject
 
impl Serialize for MoveObject
Source§impl TryFrom<&MoveObject> for AccumulatorValue
 
impl TryFrom<&MoveObject> for AccumulatorValue
Source§impl TryFrom<&MoveObject> for GasCoin
 
impl TryFrom<&MoveObject> 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 MoveObject
impl StructuralPartialEq for MoveObject
Auto Trait Implementations§
impl Freeze for MoveObject
impl RefUnwindSafe for MoveObject
impl Send for MoveObject
impl Sync for MoveObject
impl Unpin for MoveObject
impl UnwindSafe for MoveObject
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
§impl<T> CallHasher for T
 
impl<T> CallHasher for 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
§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.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
§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>
§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.