Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String contains与引用一起使用,但与实际值不一起使用_String_Rust - Fatal编程技术网

String contains与引用一起使用,但与实际值不一起使用

String contains与引用一起使用,但与实际值不一起使用,string,rust,String,Rust,考虑一个函数,该函数在一个巨大的行字符串中搜索模式,并返回找到匹配项的行: fn search_insensitive<'a>(query: &str, content: &'a str) -> Vec<&'a str> { let lowercase_query = query.to_lowercase(); let mut matches: Vec<&str> = Vec::new(); for

考虑一个函数,该函数在一个巨大的行字符串中搜索模式,并返回找到匹配项的行:

fn search_insensitive<'a>(query: &str, content: &'a str) -> Vec<&'a str> {
    let lowercase_query = query.to_lowercase();
    let mut matches: Vec<&str> = Vec::new();
    for line in content.lines() {
        let lowercase_line = line.to_lowercase();
        if lowercase_line.contains(&lowercase_query) {
            matches.push(line)
        }
    }
    matches
}
我检查了
包含的
函数的定义:

pub fn contains<'a, P: Pattern<'a>>(&'a self, pat: P) -> bool {
    pat.is_contained_in(self)
}
pub fn contains>(&'a self,pat:P)->bool{
帕特.是否包含在(自我)中
}

我看不出任何地方需要
包含
以获取参考。有人能解释一下吗?

因为
模式是为
&'String
实现的,而不是为
String

但是,当我通过值传递错误消息时,我仍然没有得到它们之间的关系

答复


如果您查看docsfor模式,您将看到最后一个文档化的impl是for,这可能解释了为什么编译器选择显示该特定类型。如果编译器说impl Pattern可能会更好,因为
Pattern
是为
&'a String
实现的,而不是为
String

但是,当我通过值传递错误消息时,我仍然没有得到它们之间的关系

答复


如果您查看docsfor模式,您将看到最后一个文档化的impl是for,这可能解释了为什么编译器选择显示该特定类型。如果编译器说impl模式“将其作为值传递”,可能会更好。您必须更多地考虑移动它,而移动值只是为了检查它是否包含某些内容是没有意义的。这就是它作为引用传递的原因。请在询问之前搜索您的错误消息。“将其作为值传递”您必须更多地考虑移动它,而移动值只是为了检查它是否包含某些内容是没有意义的。这就是它作为引用传递的原因。请在询问之前搜索您的错误消息。谢谢。我没有注意到这一点。但是,当我按值传递错误消息时,我仍然无法得到它们之间的关系。如果您查看,您将看到最后一个记录的impl是for
FnMut(char)->bool
,这可能解释了编译器选择显示该特定类型的原因。如果编译器说
impl-patternThank,可能会更好。我没有注意到这一点。但是,当我按值传递错误消息时,我仍然无法得到它们之间的关系。如果您查看,您将看到最后一个记录的impl是for
FnMut(char)->bool
,这可能解释了编译器选择显示该特定类型的原因。如果编译器说
impl模式可能会更好