exercism.ioでアナグラム演習を解決するために、ベクトルを渡して文字列のベクトルを返すために必要なことを理解しようとしています。ここで ベクトルを渡して文字列のベクトルを返すにはどうすればよいですか?
は、私が合格しようとしているテストです: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