Skip to content

Commit 21533da

Browse files
feat: improvements to Argument (#967) (#1101)
* feat: improvements to Argument (#967) * feat: improvements to Argument * display * #[serde(rename = "Argument")] * fix? * remove tag * fix * Update crates/iota-sdk-types/src/transaction/mod.rs Co-authored-by: Roman Overko <[email protected]> --------- Co-authored-by: Roman Overko <[email protected]>
1 parent 6108800 commit 21533da

2 files changed

Lines changed: 34 additions & 28 deletions

File tree

crates/iota-sdk-types/src/transaction/mod.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ pub struct Upgrade {
907907
/// argument-result = %d02 u16
908908
/// argument-nested-result = %d03 u16 u16
909909
/// ```
910-
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
910+
#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
911911
#[cfg_attr(feature = "proptest", derive(test_strategy::Arbitrary))]
912912
#[cfg_attr(feature = "bcs-schema", derive(iota_bcs_schema::BcsSchema))]
913913
#[non_exhaustive]
@@ -927,6 +927,17 @@ pub enum Argument {
927927
NestedResult(u16, u16),
928928
}
929929

930+
impl std::fmt::Display for Argument {
931+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
932+
match self {
933+
Argument::Gas => write!(f, "Gas"),
934+
Argument::Input(i) => write!(f, "Input({i})"),
935+
Argument::Result(i) => write!(f, "Result({i})"),
936+
Argument::NestedResult(i, j) => write!(f, "NestedResult({i}, {j})"),
937+
}
938+
}
939+
}
940+
930941
impl Argument {
931942
crate::def_is!(Gas, Input, Result, NestedResult);
932943

crates/iota-sdk-types/src/transaction/serialization.rs

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -485,25 +485,20 @@ mod argument {
485485
use super::*;
486486

487487
#[derive(serde::Serialize, serde::Deserialize)]
488-
#[serde(rename = "Argument", untagged, rename_all = "lowercase")]
488+
#[serde(rename = "Argument")]
489489
enum ReadableArgument {
490490
/// # Gas
491-
Gas(Gas),
491+
Gas,
492492
/// # Input
493-
Input { input: u16 },
493+
Input(u16),
494494
/// # Result
495-
Result { result: u16 },
495+
Result(u16),
496496
/// # NestedResult
497-
NestedResult { result: (u16, u16) },
498-
}
499-
500-
#[derive(serde::Serialize, serde::Deserialize)]
501-
#[serde(rename_all = "lowercase")]
502-
enum Gas {
503-
Gas,
497+
NestedResult(u16, u16),
504498
}
505499

506500
#[derive(serde::Serialize, serde::Deserialize)]
501+
#[serde(rename = "Argument")]
507502
enum BinaryArgument {
508503
Gas,
509504
Input(u16),
@@ -518,12 +513,12 @@ mod argument {
518513
{
519514
if serializer.is_human_readable() {
520515
let readable = match *self {
521-
Argument::Gas => ReadableArgument::Gas(Gas::Gas),
522-
Argument::Input(input) => ReadableArgument::Input { input },
523-
Argument::Result(result) => ReadableArgument::Result { result },
524-
Argument::NestedResult(result, subresult) => ReadableArgument::NestedResult {
525-
result: (result, subresult),
526-
},
516+
Argument::Gas => ReadableArgument::Gas,
517+
Argument::Input(input) => ReadableArgument::Input(input),
518+
Argument::Result(result) => ReadableArgument::Result(result),
519+
Argument::NestedResult(result, subresult) => {
520+
ReadableArgument::NestedResult(result, subresult)
521+
}
527522
};
528523
readable.serialize(serializer)
529524
} else {
@@ -547,12 +542,12 @@ mod argument {
547542
{
548543
if deserializer.is_human_readable() {
549544
ReadableArgument::deserialize(deserializer).map(|readable| match readable {
550-
ReadableArgument::Gas(_) => Argument::Gas,
551-
ReadableArgument::Input { input } => Argument::Input(input),
552-
ReadableArgument::Result { result } => Argument::Result(result),
553-
ReadableArgument::NestedResult {
554-
result: (result, subresult),
555-
} => Argument::NestedResult(result, subresult),
545+
ReadableArgument::Gas => Argument::Gas,
546+
ReadableArgument::Input(input) => Argument::Input(input),
547+
ReadableArgument::Result(result) => Argument::Result(result),
548+
ReadableArgument::NestedResult(result, subresult) => {
549+
Argument::NestedResult(result, subresult)
550+
}
556551
})
557552
} else {
558553
BinaryArgument::deserialize(deserializer).map(|binary| match binary {
@@ -883,12 +878,12 @@ mod tests {
883878
#[test]
884879
fn argument() {
885880
let test_cases = [
886-
(Argument::Gas, serde_json::json!("gas")),
887-
(Argument::Input(1), serde_json::json!({"input": 1})),
888-
(Argument::Result(2), serde_json::json!({"result": 2})),
881+
(Argument::Gas, serde_json::json!("Gas")),
882+
(Argument::Input(1), serde_json::json!({"Input": 1})),
883+
(Argument::Result(2), serde_json::json!({"Result": 2})),
889884
(
890885
Argument::NestedResult(3, 4),
891-
serde_json::json!({"result": [3, 4]}),
886+
serde_json::json!({"NestedResult": [3, 4]}),
892887
),
893888
];
894889

0 commit comments

Comments
 (0)