From b941c63a534b3360ce849010a6f2eef06d3299d9 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 17 Jul 2019 12:30:21 -0700 Subject: [PATCH] More typical TryFrom usage for test --- test_suite/tests/test_annotations.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/test_suite/tests/test_annotations.rs b/test_suite/tests/test_annotations.rs index 664e402c..af65406f 100644 --- a/test_suite/tests/test_annotations.rs +++ b/test_suite/tests/test_annotations.rs @@ -1590,20 +1590,20 @@ impl From> for EnumToU32 { } #[derive(Clone, Deserialize, PartialEq, Debug)] -#[serde(try_from = "EnumToU32")] -struct StructTryFromEnum(Option); +#[serde(try_from = "u32")] +enum TryFromU32 { + One, + Two, +} -impl TryFrom for StructTryFromEnum { +impl TryFrom for TryFromU32 { type Error = String; - fn try_from(value: EnumToU32) -> Result { - println!("{:?}", value); + fn try_from(value: u32) -> Result { match value { - EnumToU32::One => Ok(StructTryFromEnum(Some(1))), - EnumToU32::Two => Ok(StructTryFromEnum(Some(2))), - EnumToU32::Three => Ok(StructTryFromEnum(Some(3))), - EnumToU32::Four => Ok(StructTryFromEnum(Some(4))), - _ => Err("out of range".into()), + 1 => Ok(TryFromU32::One), + 2 => Ok(TryFromU32::Two), + _ => Err("out of range".to_owned()), } } } @@ -1616,12 +1616,8 @@ fn test_from_into_traits() { assert_ser_tokens::(&StructFromEnum(Some(5)), &[Token::None]); assert_ser_tokens::(&StructFromEnum(None), &[Token::None]); assert_de_tokens::(&StructFromEnum(Some(2)), &[Token::Some, Token::U32(2)]); - assert_de_tokens::( - &StructTryFromEnum(Some(2)), - &[Token::Some, Token::U32(2)], - ); - assert_de_tokens_error::(&[Token::Some, Token::U32(5)], "out of range"); - assert_de_tokens_error::(&[Token::None], "out of range"); + assert_de_tokens::(&TryFromU32::Two, &[Token::U32(2)]); + assert_de_tokens_error::(&[Token::U32(5)], "out of range"); } #[test]