Struct iota_types::object::MoveObject
source · pub struct MoveObject { /* private fields */ }
Implementations§
source§impl MoveObject
impl MoveObject
sourcepub fn new_from_execution(
type_: MoveObjectType,
version: SequenceNumber,
contents: Vec<u8>,
protocol_config: &ProtocolConfig,
) -> Result<Self, ExecutionError>
pub fn new_from_execution( type_: MoveObjectType, version: SequenceNumber, contents: Vec<u8>, protocol_config: &ProtocolConfig, ) -> Result<Self, ExecutionError>
Creates a new Move object of type type_
with BCS encoded bytes in
contents
.
sourcepub fn new_from_execution_with_limit(
type_: MoveObjectType,
version: SequenceNumber,
contents: Vec<u8>,
max_move_object_size: u64,
) -> Result<Self, ExecutionError>
pub fn new_from_execution_with_limit( type_: MoveObjectType, version: SequenceNumber, contents: Vec<u8>, max_move_object_size: u64, ) -> Result<Self, ExecutionError>
Creates a new Move object of type type_
with BCS encoded bytes in
contents
. It allows to set a max_move_object_size
for that.
pub fn new_gas_coin(version: SequenceNumber, id: ObjectID, value: u64) -> Self
pub fn new_coin( coin_type: MoveObjectType, version: SequenceNumber, id: ObjectID, value: u64, ) -> Self
pub fn type_(&self) -> &MoveObjectType
pub fn is_type(&self, s: &StructTag) -> 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 is_coin(&self) -> bool
pub fn is_staked_iota(&self) -> bool
pub fn is_clock(&self) -> bool
pub fn version(&self) -> SequenceNumber
sourcepub fn update_contents(
&mut self,
new_contents: Vec<u8>,
protocol_config: &ProtocolConfig,
) -> Result<(), ExecutionError>
pub 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
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, IotaError>
pub 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.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, IotaError>
sourcepub fn to_move_struct(
&self,
layout: &MoveStructLayout,
) -> Result<MoveStruct, IotaError>
pub fn to_move_struct( &self, layout: &MoveStructLayout, ) -> Result<MoveStruct, IotaError>
Convert self
to the JSON representation dictated by layout
.
sourcepub fn to_move_struct_with_resolver(
&self,
resolver: &impl GetModule,
) -> Result<MoveStruct, IotaError>
pub fn to_move_struct_with_resolver( &self, resolver: &impl GetModule, ) -> Result<MoveStruct, IotaError>
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_iota(
&self,
layout_resolver: &mut dyn LayoutResolver,
) -> Result<u64, IotaError>
pub 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§impl MoveObject
impl MoveObject
sourcepub fn get_coin_balances(
&self,
layout_resolver: &mut dyn LayoutResolver,
) -> Result<BTreeMap<TypeTag, u64>, IotaError>
pub 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
.
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 PartialEq for MoveObject
impl PartialEq for MoveObject
source§fn eq(&self, other: &MoveObject) -> bool
fn eq(&self, other: &MoveObject) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for MoveObject
impl Serialize for MoveObject
source§impl TryFrom<&MoveObject> for GasCoin
impl TryFrom<&MoveObject> for GasCoin
§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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> ConvertTo<T> for Twhere
T: Send,
impl<T> ConvertTo<T> for Twhere
T: Send,
fn convert(self) -> Result<T, Error>
fn convert_unchecked(self) -> 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<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
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§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.