Skip to content

Commit 6d41c22

Browse files
committed
Get rid of RedeemerTagEnum
1 parent 03c23dd commit 6d41c22

File tree

1 file changed

+21
-74
lines changed

1 file changed

+21
-74
lines changed

rust/src/plutus.rs

Lines changed: 21 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -559,54 +559,40 @@ impl Redeemer {
559559
}
560560

561561
#[wasm_bindgen]
562-
#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
562+
#[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
563563
pub enum RedeemerTagKind {
564564
Spend,
565565
Mint,
566566
Cert,
567567
Reward,
568568
}
569569

570-
// TODO: simplify these two into one struct if possible: see NetworkId
571-
#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
572-
enum RedeemerTagEnum {
573-
Spend,
574-
Mint,
575-
Cert,
576-
Reward,
577-
}
578-
579570
#[wasm_bindgen]
580571
#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
581-
pub struct RedeemerTag(RedeemerTagEnum);
572+
pub struct RedeemerTag(RedeemerTagKind);
582573

583574
to_from_bytes!(RedeemerTag);
584575

585576
#[wasm_bindgen]
586577
impl RedeemerTag {
587578
pub fn new_spend() -> Self {
588-
Self(RedeemerTagEnum::Spend)
579+
Self(RedeemerTagKind::Spend)
589580
}
590581

591582
pub fn new_mint() -> Self {
592-
Self(RedeemerTagEnum::Mint)
583+
Self(RedeemerTagKind::Mint)
593584
}
594585

595586
pub fn new_cert() -> Self {
596-
Self(RedeemerTagEnum::Cert)
587+
Self(RedeemerTagKind::Cert)
597588
}
598589

599590
pub fn new_reward() -> Self {
600-
Self(RedeemerTagEnum::Reward)
591+
Self(RedeemerTagKind::Reward)
601592
}
602593

603594
pub fn kind(&self) -> RedeemerTagKind {
604-
match &self.0 {
605-
RedeemerTagEnum::Spend => RedeemerTagKind::Spend,
606-
RedeemerTagEnum::Mint => RedeemerTagKind::Mint,
607-
RedeemerTagEnum::Cert => RedeemerTagKind::Cert,
608-
RedeemerTagEnum::Reward => RedeemerTagKind::Reward,
609-
}
595+
self.0
610596
}
611597
}
612598

@@ -1275,74 +1261,35 @@ impl Deserialize for Redeemer {
12751261
}
12761262
}
12771263

1278-
impl cbor_event::se::Serialize for RedeemerTagEnum {
1264+
impl cbor_event::se::Serialize for RedeemerTagKind {
12791265
fn serialize<'se, W: Write>(&self, serializer: &'se mut Serializer<W>) -> cbor_event::Result<&'se mut Serializer<W>> {
12801266
match self {
1281-
RedeemerTagEnum::Spend => {
1267+
RedeemerTagKind::Spend => {
12821268
serializer.write_unsigned_integer(0u64)
12831269
},
1284-
RedeemerTagEnum::Mint => {
1270+
RedeemerTagKind::Mint => {
12851271
serializer.write_unsigned_integer(1u64)
12861272
},
1287-
RedeemerTagEnum::Cert => {
1273+
RedeemerTagKind::Cert => {
12881274
serializer.write_unsigned_integer(2u64)
12891275
},
1290-
RedeemerTagEnum::Reward => {
1276+
RedeemerTagKind::Reward => {
12911277
serializer.write_unsigned_integer(3u64)
12921278
},
12931279
}
12941280
}
12951281
}
12961282

1297-
impl Deserialize for RedeemerTagEnum {
1283+
impl Deserialize for RedeemerTagKind {
12981284
fn deserialize<R: BufRead + Seek>(raw: &mut Deserializer<R>) -> Result<Self, DeserializeError> {
12991285
(|| -> Result<_, DeserializeError> {
1300-
let initial_position = raw.as_mut_ref().seek(SeekFrom::Current(0)).unwrap();
1301-
match (|raw: &mut Deserializer<_>| -> Result<_, DeserializeError> {
1302-
let i0_value = raw.unsigned_integer()?;
1303-
if i0_value != 0 {
1304-
return Err(DeserializeFailure::FixedValueMismatch{ found: Key::Uint(i0_value), expected: Key::Uint(0) }.into());
1305-
}
1306-
Ok(())
1307-
})(raw)
1308-
{
1309-
Ok(()) => return Ok(RedeemerTagEnum::Spend),
1310-
Err(_) => raw.as_mut_ref().seek(SeekFrom::Start(initial_position)).unwrap(),
1311-
};
1312-
match (|raw: &mut Deserializer<_>| -> Result<_, DeserializeError> {
1313-
let i1_value = raw.unsigned_integer()?;
1314-
if i1_value != 1 {
1315-
return Err(DeserializeFailure::FixedValueMismatch{ found: Key::Uint(i1_value), expected: Key::Uint(1) }.into());
1316-
}
1317-
Ok(())
1318-
})(raw)
1319-
{
1320-
Ok(()) => return Ok(RedeemerTagEnum::Mint),
1321-
Err(_) => raw.as_mut_ref().seek(SeekFrom::Start(initial_position)).unwrap(),
1322-
};
1323-
match (|raw: &mut Deserializer<_>| -> Result<_, DeserializeError> {
1324-
let i2_value = raw.unsigned_integer()?;
1325-
if i2_value != 2 {
1326-
return Err(DeserializeFailure::FixedValueMismatch{ found: Key::Uint(i2_value), expected: Key::Uint(2) }.into());
1327-
}
1328-
Ok(())
1329-
})(raw)
1330-
{
1331-
Ok(()) => return Ok(RedeemerTagEnum::Cert),
1332-
Err(_) => raw.as_mut_ref().seek(SeekFrom::Start(initial_position)).unwrap(),
1333-
};
1334-
match (|raw: &mut Deserializer<_>| -> Result<_, DeserializeError> {
1335-
let i3_value = raw.unsigned_integer()?;
1336-
if i3_value != 3 {
1337-
return Err(DeserializeFailure::FixedValueMismatch{ found: Key::Uint(i3_value), expected: Key::Uint(3) }.into());
1338-
}
1339-
Ok(())
1340-
})(raw)
1341-
{
1342-
Ok(()) => return Ok(RedeemerTagEnum::Reward),
1343-
Err(_) => raw.as_mut_ref().seek(SeekFrom::Start(initial_position)).unwrap(),
1344-
};
1345-
Err(DeserializeError::new("RedeemerTagEnum", DeserializeFailure::NoVariantMatched.into()))
1286+
match raw.unsigned_integer() {
1287+
Ok(0) => Ok(RedeemerTagKind::Spend),
1288+
Ok(1) => Ok(RedeemerTagKind::Mint),
1289+
Ok(2) => Ok(RedeemerTagKind::Cert),
1290+
Ok(3) => Ok(RedeemerTagKind::Reward),
1291+
Ok(_) | Err(_) => Err(DeserializeFailure::NoVariantMatched.into()),
1292+
}
13461293
})().map_err(|e| e.annotate("RedeemerTagEnum"))
13471294
}
13481295
}
@@ -1355,7 +1302,7 @@ impl cbor_event::se::Serialize for RedeemerTag {
13551302

13561303
impl Deserialize for RedeemerTag {
13571304
fn deserialize<R: BufRead + Seek>(raw: &mut Deserializer<R>) -> Result<Self, DeserializeError> {
1358-
Ok(Self(RedeemerTagEnum::deserialize(raw)?))
1305+
Ok(Self(RedeemerTagKind::deserialize(raw)?))
13591306
}
13601307
}
13611308

0 commit comments

Comments
 (0)