問題タブ [rust-obsolete]
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.
enums - クレートにある場合、Rust列挙型をスコープで取得できません
編集者注: この質問のコードは、1.0 より前のバージョンの Rust のものです。Rust 1.0 では、列挙型のインポート方法の基本システムが変更されました。
これは簡単なように思えますが (C/C++ 列挙型をエミュレートする)、動作させることができません。クレートから列挙型を使用したいだけですが、何を試してもうまくいかないようです。Rust 列挙型について何か不足していますか (古い C/C++ 列挙型のように使用できませんか)?
ログ/mod.rs:
main.rs:
rust - ボックス化されたイテレータをループする方法は?
注:この質問は Rust 1.0 以降廃止されました。特性には、型パラメータの代わりに関連付けられた型 があり、ブランケット実装
Iterator
がに追加されました。Item
Iterator
Box<Iterator>
イテレータを返す trait メソッドを定義したい。実際の戻り値の型を指定することは避けたいので、抽象戻り値の型をアンボックス化するまでは、trait オブジェクトを使用します。これは、メソッドが を返すことを意味しますBox<Iterator<A>>
。しかし、ボックス化された特性オブジェクトの使用方法がわかりません。タイプのオブジェクトを反復処理できませんBox<Iterator<A>>
:
これは でエラーになり"for" loop expression does not implement the "Iterator" trait
ます。
だから私の質問は次のとおりBox<Iterator<A>>
です。または、より一般的には、ボックス化された特性オブジェクトをどのように使用できますか?
struct - トレイトを実装するものへの参照を含む構造体が必要だとどのように述べればよいでしょうか?
編集者注: 質問に示されているコードは、Rust 1.0 でそのままコンパイルされます。
私はもう試した:
しかし、コンパイラは文句を言います:
rust - スライスで構造体を使用する場合、「借用した値が十分に長く存続しません」
編集者注: この質問のコードは Rust 1.0 より前のものです。それ以来、セマンティクスが変更され、質問で行われた主張の一部はもはや真実ではありません。
次のコードがあります。
&
次のように(ie &[1, 2, 3]
)を使用してスライスを定義すると、println!
出力は
なしでスライスを定義する&
私に同じ結果を与える
最初に struct のインスタンスをバインドしようとするとA
、そのa
フィールドはスライスへの参照で初期化されます (つまり、 を使用&
)、変数にx
println!
そして、前のものと同様のことを実行しようとします
私は得る
A
ただし、a
フィールドがスライスに初期化されている (を使用したスライスへの参照ではない&
) のインスタンスを変数にバインドすると、x
println!
そして、前のものと同様のことを実行しようとします
次のビルド エラーが発生します。
型が必要A { a: &[1, 2, 3] }
なので定義だけが許可されると思っていましたが、どうやら Rust ではシンボルを含めないように許可されているようです。A.a
&[i64]
&
A { a: &[1, 2, 3] }
とはどう違いA { a: [1, 2, 3] }
ますか?なぜ使用が許可されているA { a: [1, 2, 3] }
のですか (上記の 2 番目の例)。
rust - Rust の Process からの出力をどのようにストリーミングしますか?
この質問は、2014 年 10 月現在の Rust に関するものです。
Rust 1.0 以降を使用している場合は、他の場所で解決策を探すのが最善です。
Processを使用して実行している、ログ値を生成する長時間実行される Rust プロセスがあります。
set_timeout()
実行中のプロセスを定期的に「チェック」して、wait()
次のような高レベルのループを実行できる可能性があります。
私が100%ではないことは次のとおりです。からのタイムアウトエラーとプロセスリターンエラーの違いをどのように見分けるのですか? またwait()
、 を使用して、PipeStream
プッシュアウトする間隔ごとに「ストリームからブロックせずにできるだけ多くを読み取る」方法を教えてください。
これは最善のアプローチですか?代わりに stdout と stderr を監視するタスクを開始する必要がありますか?
arrays - サイズの定数式を使用して配列を宣言する
配列の周りに newtype ラッパーがあります。配列のサイズを手動で渡す代わりに使用できるsize_of
と思いましたが、コンパイラは私が間違っていると考えています。
私はナイトリーを使用しています:rustc 0.13.0-nightly (7e43f419c 2014-11-15 13:22:24 +0000)
このコードは次のエラーで失敗します。
Rust Reference on Array Expressionsは、これが機能するはずだと私に思わせます:
[expr ',' ".." expr]
フォームの の後の式は、".."
リテラルや静的アイテムなど、コンパイル時に評価できる定数式である必要があります。