【问题标题】:How to convert a list of &str into a list of static &str?如何将 &str 列表转换为静态 &str 列表?
【发布时间】:2020-02-07 22:51:33
【问题描述】:

所以我是 Rust 的新手,正在做一个字符串练习,并且有以下几点:

pub fn anagrams_for<'a>(word: &str, possible_anagrams: &[&str]) -> HashSet<&'a str> {
    let mut my_hashset: HashSet<&'a str> = HashSet::new();
    for anagram in possible_anagrams {
        if is_anagram(word, anagram) {
            my_hashset.insert(anagram);
        }
    }
    return hs;
}

但我收到以下错误:

explicit lifetime required in the type of `possible_anagrams`: lifetime `'a` required

如何在 Rust 中添加它?

编辑:另一个问题 - 我如何在不修改传入的函数参数的情况下添加它?我需要一个新的可变变量来克隆可能的字谜吗?我问是因为我认为 kata 不会让我控制最初传入的内容。但是,一旦我进入函数内部,我就可以控制对参数执行的操作。

【问题讨论】:

    标签: rust


    【解决方案1】:

    您可以为切片的&amp;strs 指定生命周期

    pub fn anagrams_for<'a>(word: &str, possible_anagrams: &[&'a str]) -> HashSet<&'a str> {
        let mut my_hashset: HashSet<&'a str> = HashSet::new();
        for anagram in possible_anagrams {
            if is_anagram(word, anagram) {
                my_hashset.insert(anagram);
            }
        }
        return my_hashset;
    }
    

    rust.playground

    【讨论】:

    • anagrams_for 的签名(参数和返回类型)是否在别处预定义?因为没有更改的签名看起来损坏了。
    • hmm...这是编码挑战类型练习的一部分,所以我认为您不应该更改函数参数类型。但是按照您建议的方式更改它会起作用。
    猜你喜欢
    • 2022-06-22
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多