構造体内のHashMap内にいくつかの関数を格納しようとしています。コレクション内の関数への引数としてジェネリックを使用する
extern crate bson;
extern crate serde;
use std::sync::Arc;
use std::collections::HashMap;
type CBack = Fn(Vec<bson::Array>) -> Vec<u8> + Send + Sync + 'static;
struct Struct {
cback_map: HashMap<String, Arc<CBack>>
}
fn main() {}
私は、引数とクロージャの戻り値の型のためにジェネリックを使用して起動すると、コンパイラはオブジェクトがように大きさとされていない文句を開始: それは私がソリッドタイプを使用している場合に動作します。代わりに、私のマップに次の署名でクロージャを保持したいと考えています:
fn fun<'de, D, R>(_: D) -> R
where D: serde::Deserialize<'de>, R: serde::Serialize {}
マップを正しく定義するにはどうしたらいいですか?
_ "コンパイラが文句を言うようになった" _これらの苦情を提出すると、助けがはるかに簡単になります。 :)私はまた、最後の関数シグネチャがあなたが前に述べたものとはまったく異なっているので、主なコンテキストが何であるかも疑問です。 –
私はコンパイラが文句を言うようになったと言いました。なぜなら、最初は大きさが違うからです。それは、同期や送信でなければ "+"で追加の特性を指定できないということです。このコンテキストでのジェネリックスなど –
あなたはあなたの質問に**私たちを示していません**どのような種類のコードで問題を引き起こしているのですか?あなたがしたのは、*ジェネリックをいくつか追加した場合、それらのジェネリックがどのように追加されたか、または生成された正確な完全なエラーを表示せずに、いくつかのエラーを表示します。 – Shepmaster