处理这种情况的最佳方法是什么:
<div id="members-search">
<input class="typeahead" type="text" placeholder="Search">
</div>
我收到错误:
use std::thread;
struct Prefe;
fn main() {
let prefe = Prefe;
start(&prefe).join();
}
fn start(pre: &Prefe) -> thread::JoinHandle {
thread::spawn(move || {
println!("Test spawn");
})
}
我想我可以使用这样的东西,但我不知道该用error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/main.rs:11:26
|
11 | fn start(pre: &Prefe) -> thread::JoinHandle {
| ^^^^^^^^^^^^^^^^^^ expected 1 type argument
:
T
我看到fn start<T>(pre: &Prefe, t: T) -> thread::JoinHandle<T> {
thread::spawn(move || {
println!("Test spawn");
})
}
使用此功能返回,但我不知道这是否可以帮助我或如何使用它:
thread::spawn
这似乎有效,但我不知道这是对还是错:
Builder::new().spawn(f).unwrap()
答案 0 :(得分:5)
查看thread::spawn
的功能签名:
pub fn spawn<F, T>(f: F) -> JoinHandle<T>
where
F: FnOnce() -> T,
F: Send + 'static,
T: Send + 'static,
这表示spawn
采用泛型F
。此类型必须实现特征FnOnce
。该实现不带参数,并返回类型为T
的参数。 spawn
返回使用相同类型JoinHandle
参数化的T
。
要使用此信息,您需要知道闭包返回的类型。一旦你知道,那就是JoinHandle
应该用参数化的类型。
您的示例闭包调用println!
,其返回类型为()
,这就是此 JoinHandle
将使用的内容。