このような状況に対処するための最良の方法は何ですか:関数からJoinHandleを返すにはどうすればよいですか?
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()
これが動作しているようですが、これは正しいか間違った方法であれば、私にはわからない:
fn start(pre: &Prefe) -> thread::JoinHandle<()> {
thread::spawn(move || {
println!("Test spawn");
})
}
あなたの説明をお寄せいただきありがとうございます。私は 'i32'を返すともっと明確になると思います。例えば、' - > JoinHandle 'Oの引数として' O 'を指定してください。 –