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".
Implementors§
impl ValueConvertible for AddressCreditWithdrawalTransition
serde-conversion and value-conversion only.impl ValueConvertible for AddressFundingFromAssetLockTransition
impl ValueConvertible for AddressFundsFeeStrategyStep
serde-conversion and value-conversion only.impl ValueConvertible for AddressFundsTransferTransition
impl ValueConvertible for AddressWitness
serde-conversion and value-conversion only.impl ValueConvertible for ArrayItemType
serde-conversion and value-conversion only.impl ValueConvertible for AssetLockProof
value-conversion only.impl ValueConvertible for AssetLockValue
serde-conversion and value-conversion only.impl ValueConvertible for AuthorizedActionTakers
impl ValueConvertible for BatchTransition
serde-conversion and value-conversion only.impl ValueConvertible for BatchedTransition
serde-conversion and value-conversion only.impl ValueConvertible for BlockInfo
impl ValueConvertible for ChainAssetLockProof
impl ValueConvertible for ChangeControlRules
impl ValueConvertible for ContenderWithSerializedDocument
impl ValueConvertible for ContestedDocumentResourceVotePoll
impl ValueConvertible for ContestedDocumentVotePollWinnerInfo
impl ValueConvertible for ContestedIndexFieldMatch
serde-conversion and value-conversion only.impl ValueConvertible for ContestedIndexInformation
serde-conversion and value-conversion only.impl ValueConvertible for ContestedIndexResolution
serde-conversion and value-conversion only.impl ValueConvertible for ContractBounds
impl ValueConvertible for DataContractConfig
impl ValueConvertible for DataContractCreateTransition
impl ValueConvertible for DataContractInSerializationFormat
impl ValueConvertible for DataContractUpdateTransition
impl ValueConvertible for DistributionFunction
serde-conversion and value-conversion only.impl ValueConvertible for Document
serde-conversion and value-conversion only.impl ValueConvertible for DocumentBaseTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentCreateTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentDeleteTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentIndexOnlyDeleteTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentPurchaseTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentReplaceTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentTransferTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentTransition
serde-conversion and value-conversion only.impl ValueConvertible for DocumentUpdatePriceTransition
serde-conversion and value-conversion only.impl ValueConvertible for Epoch
serde-conversion and value-conversion only.impl ValueConvertible for ExtendedBlockInfo
impl ValueConvertible for ExtendedEpochInfo
impl ValueConvertible for FinalizedEpochInfo
impl ValueConvertible for GasFeesPaidBy
serde-conversion and value-conversion only.impl ValueConvertible for Group
impl ValueConvertible for GroupAction
impl ValueConvertible for GroupActionEvent
impl ValueConvertible for GroupActionStatus
serde-conversion and value-conversion only.impl ValueConvertible for GroupStateTransitionInfo
serde-conversion and value-conversion only.impl ValueConvertible for Identity
impl ValueConvertible for IdentityCreateFromAddressesTransition
impl ValueConvertible for IdentityCreateFromShieldedPoolTransition
impl ValueConvertible for IdentityCreateTransition
impl ValueConvertible for IdentityCreditTransferToAddressesTransition
impl ValueConvertible for IdentityCreditTransferTransition
impl ValueConvertible for IdentityCreditWithdrawalTransition
impl ValueConvertible for IdentityPublicKey
impl ValueConvertible for IdentityPublicKeyInCreation
impl ValueConvertible for IdentityTokenInfo
impl ValueConvertible for IdentityTopUpFromAddressesTransition
impl ValueConvertible for IdentityTopUpTransition
impl ValueConvertible for IdentityUpdateTransition
impl ValueConvertible for IdentityV0
impl ValueConvertible for Index
serde-conversion and value-conversion only.impl ValueConvertible for IndexCountability
serde-conversion and value-conversion only.impl ValueConvertible for IndexProperty
serde-conversion and value-conversion only.impl ValueConvertible for InstantAssetLockProof
impl ValueConvertible for MasternodeVoteTransition
impl ValueConvertible for Metadata
serde-conversion and value-conversion only.impl ValueConvertible for OrderBy
serde-conversion and value-conversion only.impl ValueConvertible for PartialIdentity
serde-conversion and value-conversion only.impl ValueConvertible for PlatformAddress
serde-conversion and value-conversion only.impl ValueConvertible for Pooling
value-conversion only.impl ValueConvertible for ResourceVote
impl ValueConvertible for ResourceVoteChoice
impl ValueConvertible for RewardDistributionMoment
serde-conversion and value-conversion only.impl ValueConvertible for RewardDistributionType
serde-conversion and value-conversion only.impl ValueConvertible for SerializedAction
serde-conversion and value-conversion only.impl ValueConvertible for ShieldFromAssetLockTransition
impl ValueConvertible for ShieldTransition
impl ValueConvertible for ShieldedTransferTransition
impl ValueConvertible for ShieldedWithdrawalTransition
impl ValueConvertible for StateTransition
serde-conversion and value-conversion only.impl ValueConvertible for StateTransitionProofResult
serde-conversion and value-conversion only.impl ValueConvertible for StorageKeyRequirements
serde-conversion and value-conversion only.impl ValueConvertible for StoredAssetLockInfo
serde-conversion and value-conversion only.impl ValueConvertible for TokenBaseTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenBurnTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenClaimTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenConfigUpdateTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenConfiguration
impl ValueConvertible for TokenConfigurationChangeItem
serde-conversion and value-conversion only.impl ValueConvertible for TokenConfigurationConvention
impl ValueConvertible for TokenConfigurationLocalization
impl ValueConvertible for TokenConfigurationPreset
serde-conversion and value-conversion only.impl ValueConvertible for TokenConfigurationPresetFeatures
serde-conversion and value-conversion only.impl ValueConvertible for TokenContractInfo
serde-conversion and value-conversion only.impl ValueConvertible for TokenDestroyFrozenFundsTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenDirectPurchaseTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionInfo
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionKey
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionRecipient
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionResolvedRecipient
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionRules
impl ValueConvertible for TokenDistributionType
serde-conversion and value-conversion only.impl ValueConvertible for TokenDistributionTypeWithResolvedRecipient
serde-conversion and value-conversion only.impl ValueConvertible for TokenEmergencyAction
serde-conversion and value-conversion only.impl ValueConvertible for TokenEmergencyActionTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenEvent
impl ValueConvertible for TokenFreezeTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenKeepsHistoryRules
impl ValueConvertible for TokenMarketplaceRules
impl ValueConvertible for TokenMintTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenPaymentInfo
serde-conversion and value-conversion only.impl ValueConvertible for TokenPerpetualDistribution
impl ValueConvertible for TokenPreProgrammedDistribution
impl ValueConvertible for TokenPricingSchedule
serde-conversion and value-conversion only.impl ValueConvertible for TokenSetPriceForDirectPurchaseTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenStatus
impl ValueConvertible for TokenTradeMode
serde-conversion and value-conversion only.impl ValueConvertible for TokenTransferTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenTransition
serde-conversion and value-conversion only.impl ValueConvertible for TokenUnfreezeTransition
serde-conversion and value-conversion only.impl ValueConvertible for UnshieldTransition
impl ValueConvertible for Validator
serde-conversion and value-conversion only.impl ValueConvertible for ValidatorSet
serde-conversion and value-conversion only.impl ValueConvertible for Vote
impl ValueConvertible for VotePoll
impl ValueConvertible for YesNoAbstainVoteChoice
serde-conversion and value-conversion only.