我想知道我需要做什么来传递一个向量并返回一个字符串向量,以解决exercism.io上的anagram演习。如何传递一个向量并返回一个字符串向量?
这里是我试图通过测试:
fn test_no_matches() {
let inputs = ["hello", "world", "zombies", "pants"];
let outputs: Vec<&str> = vec![];
assert_eq!(anagram::anagrams_for("diaper", &inputs), outputs);
}
这里是我至今写:
pub fn anagrams_for<'a>(word: &str, inp: Vec<&'a str>) -> Vec<&'a str> {
let mut out: Vec<&str> = vec![];
let ref poss = *inp[1];
out.push(poss);
out
}
但测试被轰炸了在&inputs
捐赠我这个错误:
tests/anagram.rs:7:48: 7:55 error: mismatched types:
expected `collections::vec::Vec<&str>`,
found `&[&str; 4]`
(expected struct `collections::vec::Vec`,
found &-ptr) [E0308]
tests/anagram.rs:7 assert_eq!(anagram::anagrams_for("diaper", &inputs), outputs);
我读过关于参考,借用和生活时间。我可以诚实地说,我对传递引用有点困惑。我认为返回向量只是一个Vec<String>
,但我认为有一个关于输入向量引用导致问题的str的问题。
如果任何人都可以把我推向一个更好的方向,那将是值得赞赏的,因为我不想柯克测试。
这是[交叉发布到Reddit](https://www.reddit.com/r/rust/comments/4jsvsz/exercismio_rust_problem/)。 – Shepmaster