diff --git a/exercises/bracket-push/.meta/hints.md b/exercises/bracket-push/.meta/hints.md deleted file mode 100644 index 3bae74410..000000000 --- a/exercises/bracket-push/.meta/hints.md +++ /dev/null @@ -1,6 +0,0 @@ -# Bracket Push in Rust - -Reading about these Rust topics may help you implement a solution. - -- Lifetimes and Structs: https://doc.rust-lang.org/book/second-edition/ch10-03-lifetime-syntax.html#lifetime-annotations-in-method-definitions -- From trait: https://doc.rust-lang.org/std/convert/trait.From.html diff --git a/exercises/bracket-push/README.md b/exercises/bracket-push/README.md index 8be001cdf..a704460a5 100644 --- a/exercises/bracket-push/README.md +++ b/exercises/bracket-push/README.md @@ -4,14 +4,6 @@ Given a string containing brackets `[]`, braces `{}`, parentheses `()`, or any combination thereof, verify that any and all pairs are matched and nested correctly. -# Bracket Push in Rust - -Reading about these Rust topics may help you implement a solution. - -- Lifetimes and Structs: https://doc.rust-lang.org/book/second-edition/ch10-03-lifetime-syntax.html#lifetime-annotations-in-method-definitions -- From trait: https://doc.rust-lang.org/std/convert/trait.From.html - - ## Rust Installation Refer to the [exercism help page][help-page] for Rust installation and learning diff --git a/exercises/bracket-push/example.rs b/exercises/bracket-push/example.rs index 25bc27fba..2b9604510 100644 --- a/exercises/bracket-push/example.rs +++ b/exercises/bracket-push/example.rs @@ -1,6 +1,10 @@ use std::collections::HashMap; -pub struct Brackets { +pub fn brackets_are_balanced(string: &str) -> bool { + Brackets::from(string).are_balanced() +} + +struct Brackets { raw_brackets: Vec, pairs: MatchingBrackets, } @@ -12,7 +16,7 @@ impl<'a> From<&'a str> for Brackets { } impl Brackets { - pub fn new(s: String, pairs: Option>) -> Self { + fn new(s: String, pairs: Option>) -> Self { let p = match pairs { Some(x) => MatchingBrackets::from(x), None => MatchingBrackets::from(vec![('[', ']'), ('{', '}'), ('(', ')')]), @@ -24,7 +28,7 @@ impl Brackets { } } - pub fn are_balanced(&self) -> bool { + fn are_balanced(&self) -> bool { let mut unclosed: Vec = Vec::new(); for &bracket in self.raw_brackets.iter() { @@ -39,7 +43,7 @@ impl Brackets { } } -pub struct MatchingBrackets { +struct MatchingBrackets { collection: HashMap, } diff --git a/exercises/bracket-push/src/lib.rs b/exercises/bracket-push/src/lib.rs index d3c4ee8bf..f7004c16f 100644 --- a/exercises/bracket-push/src/lib.rs +++ b/exercises/bracket-push/src/lib.rs @@ -1,13 +1,3 @@ -pub struct Brackets; - -impl<'a> From<&'a str> for Brackets { - fn from(input: &str) -> Self { - unimplemented!("From the '{}' input construct a new Brackets struct", input); - } -} - -impl Brackets { - pub fn are_balanced(&self) -> bool { - unimplemented!("Check if your Brackets struct contains balanced brackets"); - } +pub fn brackets_are_balanced(string: &str) -> bool { + unimplemented!("Check if the string \"{}\" contains balanced brackets", string); } diff --git a/exercises/bracket-push/tests/bracket-push.rs b/exercises/bracket-push/tests/bracket-push.rs index 50a650b67..cac2ab5df 100644 --- a/exercises/bracket-push/tests/bracket-push.rs +++ b/exercises/bracket-push/tests/bracket-push.rs @@ -1,82 +1,82 @@ extern crate bracket_push; -use bracket_push::*; +use bracket_push::brackets_are_balanced; #[test] fn paired_square_brackets() { - assert!(Brackets::from("[]").are_balanced()); + assert!(brackets_are_balanced("[]")); } #[test] #[ignore] fn empty_string() { - assert!(Brackets::from("").are_balanced()); + assert!(brackets_are_balanced("")); } #[test] #[ignore] fn unpaired_brackets() { - assert!(!Brackets::from("[[").are_balanced()); + assert!(!brackets_are_balanced("[[")); } #[test] #[ignore] fn wrong_ordered_brackets() { - assert!(!Brackets::from("}{").are_balanced()); + assert!(!brackets_are_balanced("}{")); } #[test] #[ignore] fn wrong_closing_bracket() { - assert!(!Brackets::from("{]").are_balanced()); + assert!(!brackets_are_balanced("{]")); } #[test] #[ignore] fn paired_with_whitespace() { - assert!(Brackets::from("{ }").are_balanced()); + assert!(brackets_are_balanced("{ }")); } #[test] #[ignore] fn simple_nested_brackets() { - assert!(Brackets::from("{[]}").are_balanced()); + assert!(brackets_are_balanced("{[]}")); } #[test] #[ignore] fn several_paired_brackets() { - assert!(Brackets::from("{}[]").are_balanced()); + assert!(brackets_are_balanced("{}[]")); } #[test] #[ignore] fn paired_and_nested_brackets() { - assert!(Brackets::from("([{}({}[])])").are_balanced()); + assert!(brackets_are_balanced("([{}({}[])])")); } #[test] #[ignore] fn unopened_closing_brackets() { - assert!(!Brackets::from("{[)][]}").are_balanced()); + assert!(!brackets_are_balanced("{[)][]}")); } #[test] #[ignore] fn unpaired_and_nested_brackets() { - assert!(!Brackets::from("([{])").are_balanced()); + assert!(!brackets_are_balanced("([{])")); } #[test] #[ignore] fn paired_and_wrong_nested_brackets() { - assert!(!Brackets::from("[({]})").are_balanced()); + assert!(!brackets_are_balanced("[({]})")); } #[test] #[ignore] fn math_expression() { - assert!(Brackets::from("(((185 + 223.85) * 15) - 543)/2").are_balanced()); + assert!(brackets_are_balanced("(((185 + 223.85) * 15) - 543)/2")); } #[test] @@ -84,5 +84,5 @@ fn math_expression() { fn complex_latex_expression() { let input = "\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \ \\end{array}\\right)"; - assert!(Brackets::from(input).are_balanced()); + assert!(brackets_are_balanced(input)); }