// CIP-25 allows permissive parsing
+
// we still need to read the data to move on to the CBOR after it
+
cml_core::metadata::TransactionMetadatum::deserialize(raw)?;
CBORType::Special => match len {
// CIP-25 allows permissive parsing
+
// we still need to read the data to move on to the CBOR after it
+
cml_core::metadata::TransactionMetadatum::deserialize(raw)?;
+
cml_core::metadata::TransactionMetadatum::deserialize(raw)?;
let initial_position = raw.as_mut_ref().seek(SeekFrom::Current(0)).unwrap();
match (|raw: &mut Deserializer<_>| -> Result<_, DeserializeError> {
let mut label_metadata_v1_table = BTreeMap::new();
+
let mut label_metadata_v1_table_len = 0;
let label_metadata_v1_len = raw.map()?;
while match label_metadata_v1_len {
-
cbor_event::Len::Len(n) => label_metadata_v1_table.len() < n as usize,
+
cbor_event::Len::Len(n) => label_metadata_v1_table_len < n as usize,
cbor_event::Len::Indefinite => true,
-
if raw.cbor_type()? == CBORType::Special {
-
assert_eq!(raw.special()?, CBORSpecial::Break);
-
let label_metadata_v1_key = PolicyIdV1::deserialize(raw)?;
-
let mut label_metadata_v1_value_table = BTreeMap::new();
-
let label_metadata_v1_value_len = raw.map()?;
-
while match label_metadata_v1_value_len {
-
cbor_event::Len::Len(n) => label_metadata_v1_value_table.len() < n as usize,
-
cbor_event::Len::Indefinite => true,
-
if raw.cbor_type()? == CBORType::Special {
+
match raw.cbor_type()? {
+
cbor_event::Type::Text => {
+
let label_metadata_v1_key = PolicyIdV1::deserialize(raw)?;
+
let mut label_metadata_v1_value_table = BTreeMap::new();
+
let mut label_metadata_v1_value_table_len = 0;
+
let label_metadata_v1_value_len = raw.map()?;
+
while match label_metadata_v1_value_len {
+
cbor_event::Len::Len(n) => {
+
label_metadata_v1_value_table_len < n as usize
+
cbor_event::Len::Indefinite => true,
+
match raw.cbor_type()? {
+
cbor_event::Type::Text => {
+
let label_metadata_v1_value_key =
+
AssetNameV1::deserialize(raw)?;
+
let label_metadata_v1_value_value =
+
MetadataDetails::deserialize(raw)?;
+
if label_metadata_v1_value_table
+
label_metadata_v1_value_key.clone(),
+
label_metadata_v1_value_value,
+
return Err(DeserializeFailure::DuplicateKey(
+
"some complicated/unsupported type",
+
label_metadata_v1_value_table_len += 1;
+
cbor_event::Type::Special => {
+
assert_eq!(raw.special()?, CBORSpecial::Break);
+
// we still need to read the data to move on to the CBOR after it
+
cml_core::metadata::TransactionMetadatum::deserialize(
+
cml_core::metadata::TransactionMetadatum::deserialize(
+
label_metadata_v1_value_table_len += 1;
+
let label_metadata_v1_value = label_metadata_v1_value_table;
+
if label_metadata_v1_table
+
.insert(label_metadata_v1_key.clone(), label_metadata_v1_value)
+
return Err(DeserializeFailure::DuplicateKey(Key::Str(
+
String::from("some complicated/unsupported type"),
+
label_metadata_v1_table_len += 1;
+
cbor_event::Type::Special => {
assert_eq!(raw.special()?, CBORSpecial::Break);
-
let label_metadata_v1_value_key = AssetNameV1::deserialize(raw)?;
-
let label_metadata_v1_value_value = MetadataDetails::deserialize(raw)?;
-
if label_metadata_v1_value_table
-
label_metadata_v1_value_key.clone(),
-
label_metadata_v1_value_value,
-
return Err(DeserializeFailure::DuplicateKey(Key::Str(String::from(
-
"some complicated/unsupported type",
+
// we still need to read the data to move on to the CBOR after it
+
cml_core::metadata::TransactionMetadatum::deserialize(raw)?;
+
cml_core::metadata::TransactionMetadatum::deserialize(raw)?;
+
label_metadata_v1_table_len += 1;
-
let label_metadata_v1_value = label_metadata_v1_value_table;
-
if label_metadata_v1_table
-
.insert(label_metadata_v1_key.clone(), label_metadata_v1_value)
-
return Err(DeserializeFailure::DuplicateKey(Key::Str(String::from(
-
"some complicated/unsupported type",
Ok(label_metadata_v1_table)
(|| -> Result<_, DeserializeError> {
let mut data_table = BTreeMap::new();
let data_len = raw.map()?;
+
let mut data_table_len = 0;
-
cbor_event::Len::Len(n) => data_table.len() < n as usize,
+
cbor_event::Len::Len(n) => data_table_len < n as usize,
cbor_event::Len::Indefinite => true,
-
if raw.cbor_type()? == CBORType::Special {
-
assert_eq!(raw.special()?, CBORSpecial::Break);
-
let data_key = PolicyIdV2::deserialize(raw)?;
-
let mut data_value_table = BTreeMap::new();
-
let data_value_len = raw.map()?;
-
while match data_value_len {
-
cbor_event::Len::Len(n) => {
-
data_value_table.len() < n as usize
-
cbor_event::Len::Indefinite => true,
-
if raw.cbor_type()? == CBORType::Special {
+
match raw.cbor_type()? {
+
cbor_event::Type::Bytes => {
+
let data_key = PolicyIdV2::deserialize(raw)?;
+
let mut data_value_table_len = 0;
+
let mut data_value_table = BTreeMap::new();
+
let data_value_len = raw.map()?;
+
while match data_value_len {
+
cbor_event::Len::Len(n) => data_value_table_len < n as usize,
+
cbor_event::Len::Indefinite => true,
+
match raw.cbor_type()? {
+
cbor_event::Type::Bytes => {
+
let data_value_key = AssetNameV2::deserialize(raw)?;
+
MetadataDetails::deserialize(raw)?;
+
.insert(data_value_key.clone(), data_value_value)
+
return Err(DeserializeFailure::DuplicateKey(
+
"some complicated/unsupported type",
+
data_value_table_len += 1;