pub trait ValueConvertible: Serialize + DeserializeOwned {
// Provided methods
fn to_object(&self) -> Result<Value, ProtocolError>
where Self: Sized { ... }
fn into_object(self) -> Result<Value, ProtocolError>
where Self: Sized { ... }
fn from_object(value: Value) -> Result<Self, ProtocolError>
where Self: Sized { ... }
fn from_object_ref(value: &Value) -> Result<Self, ProtocolError>
where Self: Sized { ... }
}Expand description
Convert to/from platform_value::Value using non-human-readable serde
(Identifier = Value::Identifier(bytes), binary = Value::Bytes(bytes),
raw byte fields preserved without stringification).
§⚠️ HR / non-HR divergence (Critical-1)
ValueConvertible calls platform_value::to_value, which uses a serializer
that reports is_human_readable() == false. The mirror trait
JsonConvertible uses serde_json::to_value, which reports true.
Types whose Serialize impl branches on is_human_readable() produce
structurally different output between the two paths:
| Type | to_json() (HR) | to_object() (non-HR) |
|---|---|---|
platform_value::Identifier | "5bV6jUfh..." (bs58 string) | Value::Identifier([u8; 32]) |
[platform_value::BinaryData] | "sg==" (base64 string) | Value::Bytes(Vec<u8>) |
Bytes20 / Bytes32 / Bytes36 | base64 string | Value::Bytes32([u8; N]) etc. |
CoreScript | "dqkU..." (base64 string) | Value::Bytes(Vec<u8>) |
Do not assume self.to_object()?.try_into_json() ≡ self.to_json().
They render the same field as a string in one and a byte array in the
other. Round-trip tests should exercise each path independently.
§⚠️ ContentDeserializer caveat
Manual Deserialize impls that branch on deserializer.is_human_readable()
must also handle serde::__private::de::ContentDeserializer, used
internally by #[serde(tag = "...")] enums. ContentDeserializer always
reports is_human_readable: true regardless of the original source, so
a non-HR platform_value::Value flowing into a tagged enum gets shape-
inferred as if it were HR. Recipe: write a dual-shape visitor accepting
both shapes in the HR branch via deserialize_any. See
[platform_value::Bytes32::deserialize] for the canonical example, and
rs-dpp/src/serialization/serde_bytes.rs for [u8; N] / Vec<u8>.
Provided Methods§
fn to_object(&self) -> Result<Value, ProtocolError>where
Self: Sized,
fn into_object(self) -> Result<Value, ProtocolError>where
Self: Sized,
fn from_object(value: Value) -> Result<Self, ProtocolError>where
Self: Sized,
fn from_object_ref(value: &Value) -> Result<Self, ProtocolError>where
Self: Sized,
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
impl ValueConvertible for AddressWitness
value-conversion and serde-conversion only.impl ValueConvertible for PlatformAddress
value-conversion and serde-conversion only.impl ValueConvertible for AddressFundsFeeStrategyStep
value-conversion and serde-conversion only.impl ValueConvertible for StoredAssetLockInfo
value-conversion and serde-conversion only.impl ValueConvertible for AssetLockValue
value-conversion and serde-conversion only.impl ValueConvertible for ExtendedBlockInfo
impl ValueConvertible for ExtendedEpochInfo
impl ValueConvertible for FinalizedEpochInfo
impl ValueConvertible for Validator
value-conversion and serde-conversion only.impl ValueConvertible for ValidatorSet
value-conversion and serde-conversion only.impl ValueConvertible for TokenConfiguration
impl ValueConvertible for TokenConfigurationPresetFeatures
value-conversion and serde-conversion only.impl ValueConvertible for TokenConfigurationConvention
impl ValueConvertible for TokenConfigurationChangeItem
value-conversion and serde-conversion only.impl ValueConvertible for TokenConfigurationLocalization
impl ValueConvertible for TokenDistributionInfo
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionType
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionTypeWithResolvedRecipient
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionRules
impl ValueConvertible for TokenKeepsHistoryRules
impl ValueConvertible for TokenMarketplaceRules
impl ValueConvertible for TokenTradeMode
value-conversion and serde-conversion only.impl ValueConvertible for DistributionFunction
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionRecipient
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionResolvedRecipient
value-conversion and serde-conversion only.impl ValueConvertible for TokenPerpetualDistribution
impl ValueConvertible for RewardDistributionMoment
value-conversion and serde-conversion only.impl ValueConvertible for RewardDistributionType
value-conversion and serde-conversion only.impl ValueConvertible for TokenPreProgrammedDistribution
impl ValueConvertible for AuthorizedActionTakers
impl ValueConvertible for ChangeControlRules
impl ValueConvertible for DataContractConfig
impl ValueConvertible for ArrayItemType
value-conversion and serde-conversion only.impl ValueConvertible for ContestedIndexFieldMatch
value-conversion and serde-conversion only.impl ValueConvertible for ContestedIndexResolution
value-conversion and serde-conversion only.impl ValueConvertible for IndexCountability
value-conversion and serde-conversion only.impl ValueConvertible for OrderBy
value-conversion and serde-conversion only.impl ValueConvertible for Group
impl ValueConvertible for DataContractInSerializationFormat
impl ValueConvertible for StorageKeyRequirements
value-conversion and serde-conversion only.impl ValueConvertible for Document
value-conversion and serde-conversion only.impl ValueConvertible for GroupActionEvent
impl ValueConvertible for GroupAction
impl ValueConvertible for GroupActionStatus
value-conversion and serde-conversion only.impl ValueConvertible for Identity
impl ValueConvertible for ContractBounds
impl ValueConvertible for IdentityPublicKey
impl ValueConvertible for AssetLockProof
value-conversion only.impl ValueConvertible for StateTransition
value-conversion and serde-conversion only.impl ValueConvertible for StateTransitionProofResult
value-conversion and serde-conversion only.impl ValueConvertible for AddressCreditWithdrawalTransition
value-conversion and serde-conversion only.impl ValueConvertible for AddressFundingFromAssetLockTransition
impl ValueConvertible for AddressFundsTransferTransition
impl ValueConvertible for BatchedTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentPurchaseTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentTransferTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentUpdatePriceTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentBaseTransition
value-conversion and serde-conversion only.impl ValueConvertible for BatchTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentCreateTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentDeleteTransition
value-conversion and serde-conversion only.impl ValueConvertible for DocumentReplaceTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenBurnTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenClaimTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenConfigUpdateTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenDestroyFrozenFundsTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenDirectPurchaseTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenEmergencyActionTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenFreezeTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenMintTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenSetPriceForDirectPurchaseTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenTransferTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenUnfreezeTransition
value-conversion and serde-conversion only.impl ValueConvertible for TokenBaseTransition
value-conversion and serde-conversion only.impl ValueConvertible for DataContractCreateTransition
impl ValueConvertible for DataContractUpdateTransition
impl ValueConvertible for IdentityCreateFromAddressesTransition
impl ValueConvertible for IdentityCreateTransition
impl ValueConvertible for IdentityCreditTransferToAddressesTransition
impl ValueConvertible for IdentityCreditTransferTransition
impl ValueConvertible for IdentityCreditWithdrawalTransition
impl ValueConvertible for IdentityTopUpFromAddressesTransition
impl ValueConvertible for IdentityTopUpTransition
impl ValueConvertible for IdentityUpdateTransition
impl ValueConvertible for MasternodeVoteTransition
impl ValueConvertible for IdentityPublicKeyInCreation
impl ValueConvertible for IdentityCreateFromShieldedPoolTransition
impl ValueConvertible for ShieldFromAssetLockTransition
impl ValueConvertible for ShieldTransition
impl ValueConvertible for ShieldedTransferTransition
impl ValueConvertible for ShieldedWithdrawalTransition
impl ValueConvertible for UnshieldTransition
impl ValueConvertible for TokenContractInfo
value-conversion and serde-conversion only.impl ValueConvertible for TokenEmergencyAction
value-conversion and serde-conversion only.impl ValueConvertible for GasFeesPaidBy
value-conversion and serde-conversion only.impl ValueConvertible for IdentityTokenInfo
impl ValueConvertible for TokenStatus
impl ValueConvertible for TokenEvent
impl ValueConvertible for TokenPaymentInfo
value-conversion and serde-conversion only.impl ValueConvertible for TokenPricingSchedule
value-conversion and serde-conversion only.impl ValueConvertible for ContenderWithSerializedDocument
impl ValueConvertible for ResourceVoteChoice
impl ValueConvertible for YesNoAbstainVoteChoice
value-conversion and serde-conversion only.impl ValueConvertible for ContestedDocumentVotePollWinnerInfo
impl ValueConvertible for VotePoll
impl ValueConvertible for Vote
impl ValueConvertible for ResourceVote
impl ValueConvertible for Pooling
value-conversion only.impl ValueConvertible for BlockInfo
impl ValueConvertible for Epoch
value-conversion and serde-conversion only.impl ValueConvertible for TokenConfigurationPreset
value-conversion and serde-conversion only.impl ValueConvertible for TokenDistributionKey
value-conversion and serde-conversion only.impl ValueConvertible for ContestedIndexInformation
value-conversion and serde-conversion only.impl ValueConvertible for Index
value-conversion and serde-conversion only.impl ValueConvertible for IndexProperty
value-conversion and serde-conversion only.impl ValueConvertible for GroupStateTransitionInfo
value-conversion and serde-conversion only.impl ValueConvertible for ChainAssetLockProof
impl ValueConvertible for InstantAssetLockProof
impl ValueConvertible for PartialIdentity
value-conversion and serde-conversion only.impl ValueConvertible for IdentityV0
impl ValueConvertible for Metadata
value-conversion and serde-conversion only.impl ValueConvertible for SerializedAction
value-conversion and serde-conversion only.