問題タブ [rust]
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.
pointers - パターンマッチング中にフィールドを変更する
私は今日初めて Rust を試しました (XML トークナイザーを作成しました) が、もちろんすべてを理解しているわけではありません。
列挙値を取ることができるフィールドを持つ構造体があります:
ではimpl Tokenizer
、現在の状態で一致させ、場合によっては変更したいのですが、これは常にuse of moved value
エラーになります。
H は状態フィールドにアクセスおよび/または宣言して、それに基づいて一致させ、一致ブランチ内でその値を変更できるようにしますか?
混乱させて申し訳ありません。状態の文字列フィールドではなく、トークナイザーの状態フィールドを変更するつもりでした!
rust - Rust の共有トレイトへのポインタを借りることはできますか?
借用ポインター (壊れた) に関するチュートリアルから、少し変更しました。
共有ボックスは機能のために自動的に借りられるため、すべて問題ありません。
しかし、トレイトで同じことを行います:
そして、失敗します(コンパイラバージョン0.6):
エラー: 型の不一致: 予期され
&TPoint
たが見つかりました@TPoint
(特性ストレージが異なります: 予期された & が見つかりました @)
これはコンパイラのバグですか? または、借用したポインターは特性に許可されていませんか?
答えが後者なら、それはなぜですか?
rust - Rust での遅延シーケンス生成
他の言語が遅延シーケンスまたは「ジェネレーター」関数と呼ぶものを作成するにはどうすればよいですか?
Python ではyield
、次の例 (Python のドキュメントから) のように使用して、中間リストのメモリを使用しない方法で反復可能なシーケンスを遅延生成できます。
Rustで同様のことを行うにはどうすればよいですか?
types - Rustで所有ベクターの内容を静的ベクターと比較する方法は?
テストの一環として、関数が適切な内容のベクトルを返すことをアサートしたいと思います。したがって、期待されるデータを静的変数として使用できるようにしました。ただし、マネージド ベクターの内容を静的ベクター変数と比較する適切な方法が見つかりません。
更新:比較する前に静的ベクターへの参照を割り当てると問題が回避されるため、最終的にはベクターが等しいことをアサートするための小さなマクロが作成されました。
使用法:assert_typed_eq([u8], my_data, expected_data);
naming - なぜ「錆」と呼ばれるのですか?
Rustプログラミング言語が「Rust」と呼ばれるのはなぜですか?
誰がその名前を付けたのか、またその理由について何か知られていることはありますか? (私は正の関連性を思いつくのに苦労しています)。
multidimensional-array - さび、segfaultingの多次元ベクトル?
C#では、このようなことができます
後で次のようなものでタイル要素にアクセスしますLocation[2, 40, 20]
Rust で同様のタイプの構造を作成しようとしていますが、構文が少し奇妙です。私はこれを思いつきましたが、大きなベクトルサイズでセグメンテーション違反を起こしました (スタックを使い果たしましたか?):
私はこれについて間違っていますか?それは非常にゆっくりと実行され、大きなサイズでセグメンテーション違反が発生しました。おそらく、タイルの 3 次元空間 (レイヤー、幅、高さ) を格納するためのより良い方法はありますか?
編集:これは、これらのタイルを可変にしようとする前です
rust - ベクトルへの借用参照の有効期間とそれに含まれる借用ポインタの関係は?
編集者注: このコード例は、Rust 1.0 より前のバージョンのものであり、構文的に有効な Rust 1.0 コードではありません。このコードの更新されたバージョンではさまざまなエラーが発生しますが、回答には依然として貴重な情報が含まれています。
Rust 0.6でこのコードを試しました:
この型シグネチャの意味は次のとおりだと思います。
これは、ベクトル内のポインターが (読み取り専用) ベクトル自体ほど長く存続しない可能性があることを暗示しているようです。これは可能ですか?
これが問題ないことをコンパイラに伝えるために、追加の注釈を付ける必要がありますか?
同様に、所有されたポインターのベクトルはどうでしょうか? 例えば
繰り返しますが、少なくともリスト全体を借用している限り、ベクトルの要素へのポインタを借用できると期待しています。
コンテキストとして、私の最初の問題は、借用したポイントのリストを所有するポインターのリストで拡張しようとすることでした:
計画は次のとおりでした: 借用したすべてのポインターを含む拡張リストを作成し、それを使用してから、拡張リストを解放し、含まれている文字列を含む所有ポインターの元のリストを解放します。
rust - Rusti を機能させるにはどうすればよいですか?
昨日、Rust 0.6 をインストールしました。チュートリアルを読み、コーディングを始めることに興奮しています。インストールの結果、マシンにrustiについての言及はありません。ソースをダウンロードして自分でビルドする必要がありますか? 私はWindowsマシンを使用しています。ありがとう。
編集: ここで wiki で答えを見つけました。そこで質問なのですが、共有できる Windows 用のrusti のバイナリを構築した人はいますか?