問題タブ [trait-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
15115 参照

rust - Rust のスレッド間で特性オブジェクトを送信する

スレッド間で特性オブジェクトを送信したいのですが、それが可能かどうかわかりません。Send彼らは明らかに特性を満たしていないので、そうではないかもしれません.

次のコードは、私がやろうとしていることを示しています。

これは次のメッセージで失敗します。

ボックス化されていないプレーンな trait オブジェクトを送信しようとすると、その他のエラーが多数発生しSend + Sizedます。

私はまだRustにかなり慣れていないので、何かが欠けているかどうかはわかりませんが、コンパイラに特性オブジェクトを作成するよう説得する方法がないという印象を受けますSend

現在それが不可能である場合、将来これを可能にする可能性のある作業は現在進行中ですか?

0 投票する
2 に答える
237 参照

syntax - Rustで「impl TraitX for TraitY」とはどういう意味ですか?

例えば:

私はそれが同じ意味になると思った

しかし、エラーメッセージはそうでないことを示唆しています:

impl TraitX for TraitY(または明示的なライフタイムを持つその変種) は、Rust で何かを意味しますか? もしそうなら、その使用の例は何ですか?

0 投票する
2 に答える
130 参照

rust - 特定の特性/構造体の組み合わせの v-ptr を取得する方法は?

Rust では、aは脂肪参照&Tであり、実際には に対応します。Ttraitraw::TraitObject

を使用すると、余暇に を分解TraitObjectおよび再構築できます。&T

ただし、 a を分解して を取得するvtableのは簡単ですが、そもそも を取得せず、 and だけを取得する&Tとどうなるでしょうか。基本的に、次のようなものです。&TTS

どうすればそこから v-ptr を推測できますか? 私が使用できる組み込みはありますか?

S注: を作成して(または空中から呼び出して)参照を作成する単純な実装は&T機能しません。コンパイラTは、必ずしも a ではないため、traitサイズ&Tが 1 つまたは 2 つのポインターであると不平を言います。

0 投票する
0 に答える
162 参照

casting - RcをキャストするにはどうすればよいですかRcに>>

を実装する特性MyTraitと構造体があります。MyStructMyTrait

引数として受け入れる関数もありRc<RefCell<Box<MyTrait>>>ます。

コードのどこかで、次のインスタンスを作成しますRc<RefCell<Box<MyStruct>>>

関数に渡すmy_structと、コンパイラ エラーが発生します。

エラー: 型が一致しません: 予想されるalloc::rc::Rc<core::cell::RefCell<Box<MyTrait>>>、見つかりましたalloc::rc::Rc<core::cell::RefCell<Box<MyStruct>>>

Rc<RefCell<Box<MyStruct>>>必要な型を明示的に指定してのインスタンスを作成することで、これを修正しようとしています。

この場合、関数への受け渡しは正常に機能しますが、変数を介して特定のフィールドにmy_structアクセスできなくなりました。そして、それは にキャストする方法ではないようです。MyStructmy_structRc<RefCell<Box<MyTrait>>>Rc<RefCell<Box<MyStruct>>>

どうすればこの問題を回避できますか?

0 投票する
1 に答える
847 参照

rust - u8 スライスから Read trait オブジェクトを作成する

このように、クレートで使用するために、スライスReadから特性オブジェクトを作成しようとしていますu8murmur3

しかし、私は得る

このコードの何が問題になっていますか?

0 投票する
3 に答える
1710 参照

rust - ボックスの作成方法、またはボックス化されたサイズのない一般的な値ですか?

次のコードがあります

それは不平を言う

がこれを on に課さないのに、なぜSizedonRngが必要なのか理解できません。Box<T>T

0 投票する
3 に答える
1383 参照

rust - Rust の混同エラーと特性オブジェクトの有効期間

次のコードで何が問題なのか誰にもわかりますか? コンパイラはライフタイムについて不平を言っていますが、エラーメッセージはまったく意味がありません。考えられることはすべて試しましたが、何も役に立たないようです。

コンパイルエラーは

これはまったく意味がありません。借り手はどのように長生きしていますか?借りた値すら使っていない!