From d45deae242f6a256b52874d5a6995e3a7e0bdab4 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Tue, 11 Sep 2018 20:32:01 -0700 Subject: use idiomatic from_str for ExpandFlags --- rust/src/api_helpers.rs | 30 +++++++++++++++++------------- rust/src/api_wrappers.rs | 2 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/rust/src/api_helpers.rs b/rust/src/api_helpers.rs index f260d25f..1df42622 100644 --- a/rust/src/api_helpers.rs +++ b/rust/src/api_helpers.rs @@ -29,12 +29,16 @@ pub struct ExpandFlags { pub creators: bool, } -impl ExpandFlags { - pub fn from_string(param: &str) -> ExpandFlags { +impl FromStr for ExpandFlags { + type Err = Error; + fn from_str(param: &str) -> Result { let list: Vec<&str> = param.split_terminator(",").collect(); - ExpandFlags::from_strings(&list) + Ok(ExpandFlags::from_str_list(&list)) } - pub fn from_strings(list: &[&str]) -> ExpandFlags { +} + +impl ExpandFlags { + pub fn from_str_list(list: &[&str]) -> ExpandFlags { if list.contains(&"none") { ExpandFlags::none() } else if list.contains(&"all") { @@ -68,10 +72,10 @@ impl ExpandFlags { #[test] fn test_expand_flags() { - assert!(ExpandFlags::from_strings(&vec![]).files == false); - assert!(ExpandFlags::from_strings(&vec!["files"]).files == true); - assert!(ExpandFlags::from_strings(&vec!["file"]).files == false); - let all = ExpandFlags::from_strings(&vec![ + assert!(ExpandFlags::from_str_list(&vec![]).files == false); + assert!(ExpandFlags::from_str_list(&vec!["files"]).files == true); + assert!(ExpandFlags::from_str_list(&vec!["file"]).files == false); + let all = ExpandFlags::from_str_list(&vec![ "files", "container", "other_thing", @@ -86,11 +90,11 @@ fn test_expand_flags() { creators: true } ); - assert!(ExpandFlags::from_string("").files == false); - assert!(ExpandFlags::from_string("files").files == true); - assert!(ExpandFlags::from_string("something,,files").files == true); - assert!(ExpandFlags::from_string("file").files == false); - let all = ExpandFlags::from_string("files,container,other_thing,releases,creators"); + assert!(ExpandFlags::from_str("").files == false); + assert!(ExpandFlags::from_str("files").files == true); + assert!(ExpandFlags::from_str("something,,files").files == true); + assert!(ExpandFlags::from_str("file").files == false); + let all = ExpandFlags::from_str("files,container,other_thing,releases,creators"); assert!( all == ExpandFlags { files: true, diff --git a/rust/src/api_wrappers.rs b/rust/src/api_wrappers.rs index 1f61cc9b..85739ea6 100644 --- a/rust/src/api_wrappers.rs +++ b/rust/src/api_wrappers.rs @@ -39,7 +39,7 @@ macro_rules! wrap_entity_handlers { match expand { None => $model::db_get(&conn, entity_id), Some(param) => { - let expand_flags = ExpandFlags::from_string(¶m); + let expand_flags = ExpandFlags::from_str(¶m)?; let mut entity = $model::db_get(&conn, entity_id)?; entity.db_expand(&conn, expand_flags)?; Ok(entity) -- cgit v1.2.3