pub enum Value {
Int(i128),
UInt(u128),
Bool(bool),
Sequence(SequenceData),
Principal(PrincipalData),
Tuple(TupleData),
Optional(OptionalData),
Response(ResponseData),
CallableContract(CallableData),
}
Variants§
Int(i128)
UInt(u128)
Bool(bool)
Sequence(SequenceData)
Principal(PrincipalData)
Tuple(TupleData)
Optional(OptionalData)
Response(ResponseData)
CallableContract(CallableData)
Implementations§
Source§impl Value
impl Value
pub fn deserialize_read<R>(
r: &mut R,
expected_type: Option<&TypeSignature>,
sanitize: bool,
) -> Result<Value, SerializationError>where
R: Read,
Sourcepub fn deserialize_read_count<R>(
r: &mut R,
expected_type: Option<&TypeSignature>,
sanitize: bool,
) -> Result<(Value, u64), SerializationError>where
R: Read,
pub fn deserialize_read_count<R>(
r: &mut R,
expected_type: Option<&TypeSignature>,
sanitize: bool,
) -> Result<(Value, u64), SerializationError>where
R: Read,
Deserialize just like deserialize_read
but also
return the bytes read.
If sanitize
argument is set to true and expected_type
is supplied,
this method will remove any extraneous tuple fields which may have been
allowed by least_super_type
.
pub fn serialize_write<W>(&self, w: &mut W) -> Result<(), SerializationError>where
W: Write,
Sourcepub fn try_deserialize_bytes(
bytes: &Vec<u8>,
expected: &TypeSignature,
sanitize: bool,
) -> Result<Value, SerializationError>
pub fn try_deserialize_bytes( bytes: &Vec<u8>, expected: &TypeSignature, sanitize: bool, ) -> Result<Value, SerializationError>
This function attempts to deserialize a byte buffer into a Clarity Value.
The expected_type
parameter tells the deserializer to expect (and enforce)
a particular type. ClarityDB
uses this to ensure that lists, tuples, etc. loaded from the database
have their max-length and other type information set by the type declarations in the contract.
Sourcepub fn try_deserialize_hex(
hex: &str,
expected: &TypeSignature,
sanitize: bool,
) -> Result<Value, SerializationError>
pub fn try_deserialize_hex( hex: &str, expected: &TypeSignature, sanitize: bool, ) -> Result<Value, SerializationError>
This function attempts to deserialize a hex string into a Clarity Value.
The expected_type
parameter tells the deserializer to expect (and enforce)
a particular type. ClarityDB
uses this to ensure that lists, tuples, etc. loaded from the database
have their max-length and other type information set by the type declarations in the contract.
Sourcepub fn try_deserialize_bytes_exact(
bytes: &Vec<u8>,
expected: &TypeSignature,
sanitize: bool,
) -> Result<Value, SerializationError>
pub fn try_deserialize_bytes_exact( bytes: &Vec<u8>, expected: &TypeSignature, sanitize: bool, ) -> Result<Value, SerializationError>
This function attempts to deserialize a byte buffer into a
Clarity Value, while ensuring that the whole byte buffer is
consumed by the deserialization, erroring if it is not. The
expected_type
parameter tells the deserializer to expect
(and enforce) a particular type. ClarityDB
uses this to
ensure that lists, tuples, etc. loaded from the database have
their max-length and other type information set by the type
declarations in the contract.
Sourcepub fn try_deserialize_hex_untyped(
hex: &str,
) -> Result<Value, SerializationError>
pub fn try_deserialize_hex_untyped( hex: &str, ) -> Result<Value, SerializationError>
Try to deserialize a value from a hex string without type information. This does not perform sanitization.
pub fn serialized_size(&self) -> Result<u32, SerializationError>
Source§impl Value
impl Value
pub fn serialize_to_vec(&self) -> Result<Vec<u8>, InterpreterError>
Sourcepub fn serialize_to_hex(&self) -> Result<String, InterpreterError>
pub fn serialize_to_hex(&self) -> Result<String, InterpreterError>
This does not perform any data sanitization
Sourcepub fn sanitize_value(
epoch: &StacksEpochId,
expected: &TypeSignature,
value: Value,
) -> Option<(Value, bool)>
pub fn sanitize_value( epoch: &StacksEpochId, expected: &TypeSignature, value: Value, ) -> Option<(Value, bool)>
Sanitize value
against pre-2.4 serialization
Returns Some if the sanitization is successful, or was not necessary. Returns None if the sanitization failed.
Returns the sanitized value and whether or not sanitization was required.
Source§impl Value
impl Value
pub fn some(data: Value) -> Result<Value, Error>
pub fn none() -> Value
pub fn okay_true() -> Value
pub fn err_uint(ecode: u128) -> Value
pub fn err_none() -> Value
pub fn okay(data: Value) -> Result<Value, Error>
pub fn error(data: Value) -> Result<Value, Error>
pub fn size(&self) -> Result<u32, Error>
pub fn depth(&self) -> Result<u8, Error>
Sourcepub fn list_with_type(
epoch: &StacksEpochId,
list_data: Vec<Value>,
expected_type: ListTypeData,
) -> Result<Value, Error>
pub fn list_with_type( epoch: &StacksEpochId, list_data: Vec<Value>, expected_type: ListTypeData, ) -> Result<Value, Error>
Invariant: the supplied Values have already been “checked”, i.e., it’s a valid Value object this invariant is enforced through the Value constructors, each of which checks to ensure that any typing data is correct.
pub fn cons_list_unsanitized(list_data: Vec<Value>) -> Result<Value, Error>
pub fn cons_list( list_data: Vec<Value>, epoch: &StacksEpochId, ) -> Result<Value, Error>
Sourcepub fn buff_from(buff_data: Vec<u8>) -> Result<Value, Error>
pub fn buff_from(buff_data: Vec<u8>) -> Result<Value, Error>
§Errors
- CheckErrors::ValueTooLarge if
buff_data
is too large.
pub fn buff_from_byte(byte: u8) -> Value
pub fn string_ascii_from_bytes(bytes: Vec<u8>) -> Result<Value, Error>
pub fn string_utf8_from_string_utf8_literal( tokenized_str: String, ) -> Result<Value, Error>
pub fn string_utf8_from_bytes(bytes: Vec<u8>) -> Result<Value, Error>
pub fn string_utf8_from_unicode_scalars( scalars: Vec<u8>, ) -> Result<Value, Error>
pub fn expect_ascii(self) -> Result<String, Error>
pub fn expect_u128(self) -> Result<u128, Error>
pub fn expect_i128(self) -> Result<i128, Error>
pub fn expect_buff(self, sz: usize) -> Result<Vec<u8>, Error>
pub fn expect_list(self) -> Result<Vec<Value>, Error>
pub fn expect_buff_padded(self, sz: usize, pad: u8) -> Result<Vec<u8>, Error>
pub fn expect_bool(self) -> Result<bool, Error>
pub fn expect_tuple(self) -> Result<TupleData, Error>
pub fn expect_optional(self) -> Result<Option<Value>, Error>
pub fn expect_principal(self) -> Result<PrincipalData, Error>
pub fn expect_callable(self) -> Result<CallableData, Error>
pub fn expect_result(self) -> Result<Result<Value, Value>, Error>
pub fn expect_result_ok(self) -> Result<Value, Error>
pub fn expect_result_err(self) -> Result<Value, Error>
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Value
impl<'de> Deserialize<'de> for Value
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Value, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Value, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<&Value> for TypePrefix
impl From<&Value> for TypePrefix
Source§fn from(v: &Value) -> TypePrefix
fn from(v: &Value) -> TypePrefix
Source§impl From<PrincipalData> for Value
impl From<PrincipalData> for Value
Source§fn from(p: PrincipalData) -> Value
fn from(p: PrincipalData) -> Value
Source§impl From<QualifiedContractIdentifier> for Value
impl From<QualifiedContractIdentifier> for Value
Source§fn from(principal: QualifiedContractIdentifier) -> Value
fn from(principal: QualifiedContractIdentifier) -> Value
Source§impl From<StandardPrincipalData> for Value
impl From<StandardPrincipalData> for Value
Source§fn from(principal: StandardPrincipalData) -> Value
fn from(principal: StandardPrincipalData) -> Value
Source§impl Into<Value> for ShortReturnType
impl Into<Value> for ShortReturnType
Source§impl MemoryConsumer for Value
impl MemoryConsumer for Value
fn get_memory_use(&self) -> Result<u64, CostErrors>
Source§impl SequencedValue<Value> for ListData
impl SequencedValue<Value> for ListData
fn items(&self) -> &Vec<Value>
fn drained_items(&mut self) -> Vec<Value>
fn type_signature(&self) -> Result<TypeSignature, CheckErrors>
fn to_value(v: &Value) -> Result<Value, Error>
fn atom_values(&mut self) -> Result<Vec<SymbolicExpression>, Error>
Source§impl Serialize for Value
impl Serialize for Value
Source§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 StacksMessageCodec for Value
Note: the StacksMessageCodec implementation for Clarity values does not
sanitize its serialization or deserialization.
impl StacksMessageCodec for Value
Note: the StacksMessageCodec implementation for Clarity values does not sanitize its serialization or deserialization.
impl Eq for Value
impl StructuralPartialEq for Value
Auto Trait Implementations§
impl Freeze for Value
impl RefUnwindSafe for Value
impl Send for Value
impl Sync for Value
impl Unpin for Value
impl UnwindSafe for Value
Blanket Implementations§
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.