Rust trait&x27中的冲突实现;工厂'; fn home(名称:String)->String{ 名称 } fn index()->字符串{ “你好”。to_string() } 特征工厂{} T的impl工厂,其中T:Fn()->String{ } T的impl工厂,其中T:Fn(字符串)->String{ } 结构用户{} impl用户{ fn get(工厂:F)其中F:工厂{ } } fn main(){ User::get(索引); 用户::get(home); }
嘿,伙计们,我遇到了这个问题,rust编译器抱怨特性实现冲突。当我编写这段代码“impl Factory for T where T:Fn(String)->String”时,就会出现这个问题。请帮忙。任何解决此问题的建议都会有所帮助。这是否回答了您的问题?你到底想做什么?从技术上讲,Rust trait&x27中的冲突实现;工厂'; fn home(名称:String)->String{ 名称 } fn index()->字符串{ “你好”。to_string() } 特征工厂{} T的impl工厂,其中T:Fn()->String{ } T的impl工厂,其中T:Fn(字符串)->String{ } 结构用户{} impl用户{ fn get(工厂:F)其中F:工厂{ } } fn main(){ User::get(索引); 用户::get(home); },rust,traits,Rust,Traits,嘿,伙计们,我遇到了这个问题,rust编译器抱怨特性实现冲突。当我编写这段代码“impl Factory for T where T:Fn(String)->String”时,就会出现这个问题。请帮忙。任何解决此问题的建议都会有所帮助。这是否回答了您的问题?你到底想做什么?从技术上讲,index和home是函数指针,而不是闭包。不能这样做的原因是,即使闭包可以是Fn(String)->String。从技术上讲,这并不妨碍它也实现Fn()->String。这与可变闭包有关。我尝试使用宏规则!来解决
index
和home
是函数指针,而不是闭包。不能这样做的原因是,即使闭包可以是Fn(String)->String
。从技术上讲,这并不妨碍它也实现Fn()->String
。这与可变闭包有关。我尝试使用宏规则!来解决我的问题。这对我来说确实有用。但我不明白为什么上面的代码不起作用。
fn home(name:String) -> String {
name
}
fn index() -> String {
"Hello".to_string()
}
trait Factory {}
impl<T> Factory for T where T: Fn() -> String {
}
impl<T> Factory for T where T: Fn(String) -> String {
}
struct User {}
impl User {
fn get<F>(factory: F) where F: Factory {
}
}
fn main() {
User::get(index);
User::get(home);
}