radix_common/data/scrypto/
custom_extension.rs1use crate::internal_prelude::*;
2
3#[derive(Debug, Clone, PartialEq, Eq, Copy)]
4pub struct ScryptoCustomExtension {}
5
6impl CustomExtension for ScryptoCustomExtension {
7 const PAYLOAD_PREFIX: u8 = SCRYPTO_SBOR_V1_PAYLOAD_PREFIX;
8
9 type CustomValueKind = ScryptoCustomValueKind;
10 type CustomTraversal = ScryptoCustomTraversal;
11 type CustomSchema = ScryptoCustomSchema;
12
13 fn custom_value_kind_matches_type_kind(
14 _: &Schema<Self::CustomSchema>,
15 custom_value_kind: Self::CustomValueKind,
16 type_kind: &LocalTypeKind<Self::CustomSchema>,
17 ) -> bool {
18 match custom_value_kind {
19 ScryptoCustomValueKind::Reference => matches!(
20 type_kind,
21 TypeKind::Custom(ScryptoCustomTypeKind::Reference)
22 ),
23 ScryptoCustomValueKind::Own => {
24 matches!(type_kind, TypeKind::Custom(ScryptoCustomTypeKind::Own))
25 }
26 ScryptoCustomValueKind::Decimal => {
27 matches!(type_kind, TypeKind::Custom(ScryptoCustomTypeKind::Decimal))
28 }
29 ScryptoCustomValueKind::PreciseDecimal => matches!(
30 type_kind,
31 TypeKind::Custom(ScryptoCustomTypeKind::PreciseDecimal)
32 ),
33 ScryptoCustomValueKind::NonFungibleLocalId => matches!(
34 type_kind,
35 TypeKind::Custom(ScryptoCustomTypeKind::NonFungibleLocalId)
36 ),
37 }
38 }
39
40 fn custom_type_kind_matches_non_custom_value_kind(
41 _: &Schema<Self::CustomSchema>,
42 _: &<Self::CustomSchema as CustomSchema>::CustomLocalTypeKind,
43 _: ValueKind<Self::CustomValueKind>,
44 ) -> bool {
45 false
47 }
48}