Rust 获取错误“;特性'std::ops::FnMut<;(char,)>;`未为“std::string::string`”实现;对于简单的类型不匹配

Rust 获取错误“;特性'std::ops::FnMut<;(char,)>;`未为“std::string::string`”实现;对于简单的类型不匹配,rust,Rust,错误: let mystring = format!("the quick brown {}", "fox..."); assert!(mystring.ends_with(mystring)); 错误更容易理解: let mystring = String::from_str("The quick brown fox..."); assert!(mystring.ends_with(mystring)); 错误[E0599]:找不到类型名为`ends_with`的方法 `s

错误:

    let mystring = format!("the quick brown {}", "fox...");
    assert!(mystring.ends_with(mystring));
错误更容易理解:

let mystring = String::from_str("The quick brown fox...");
assert!(mystring.ends_with(mystring));
错误[E0599]:找不到类型名为`ends_with`的方法
`std::result::result`
在当前范围内

这个错误还有很多:

error[E0599]: no method named `ends_with` found for type
`std::result::Result<std::string::String, std::string::ParseError>`
in the current scope
因此,如果您进行更改,您的代码段可以正常工作

impl<'a, 'b> Pattern<'a> for &'b String

这也是有意义的,因为否则您会试图将
mystring
的所有权传递给带有
函数的
ends\u,这似乎是不对的

至于您看到的特定错误,
模式的特征定义还包括

assert!(mystring.ends_with(&mystring));
impl for F
哪里
F:FnMut(char)->bool,
这通常表示函数接受字符并返回布尔计数作为模式,导致消息说
String
与该特征实现不匹配

impl<'a, 'b> Pattern<'a> for &'b String
assert!(mystring.ends_with(mystring));
assert!(mystring.ends_with(&mystring));
impl<'a, F> Pattern<'a> for F 
where
    F: FnMut(char) -> bool,