問題タブ [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.
ruby - Rubyのメソッドの呼び出し元のスコープにモジュールからメソッドを持ち込む方法は?
コードは次のようになります。
さびたコードをインライン化するライブラリを書きたいので、機能が必要なので、次のように書くことができるはずです:
これはルビーで可能ですか?(さらに詳しい情報が必要な場合は、お気軽にお問い合わせください!)
rust - 'extern "C" fn' 型のクロージャを作成する方法
これは、この質問に関する短い例です。
すると、rustc がエラーで停止します。
ラムダをextern fnにする方法が見つかりません。
私は何をすべきか?
rust - Rust のデータ型 (float など) はどこで定義されていますか?
Rust は明らかに新しい言語 (0.8) です。面白そうで、見始めています。float
に変更されたいくつかのソフトウェアの言及に出くわしたので、を含むデータ型が定義されf64
ている場所を見つけたいと思いました。float
あまり具体的なものは見つかりませんでした。私は見つけました:
浮動小数点型には、 、 、および の 3 つが
float
ありf32
ますf64
。浮動小数点数は、 、 、または と書かれて0.0
い1e6
ます2.1e-4
。整数と同様に、浮動小数点リテラルは正しい型であると推測されます。サフィックスf
、f32
、およびf64
.
「 float」または「f」は16ビットだと思います。
より一般的な注意点として (私はコンピューター科学者ではありません)、 、 、 、 、 (いくつか例を挙げると) のようなこれらすべての小さなデータ型をいじる価値int
はint32
本当にint64
ありf
ますf32
かf64
? 私はいくつかの言語を理解することができます。文字列はかなり複雑な型であるため、バイト型です。数値型の場合、不必要な複雑さが生じるだけだと思います。i64
andf64
とintおよびfloatを使用しないでください(またはi64
、f64
将来の変更に対応するために、または float と int をこれらにデフォルト設定します)。
より小さな値を必要とする低レベルのプログラムがいくつかあるかもしれませんが、それらを必要とするプログラムに使用を予約して、それらをコアから除外してみませんか? たとえばから変換するのは不必要な雑用だと思います。など、そしてそれは実際に何を達成しますかint
? i64
または、それらを「コア」のままにして、デフォルトで 64 ビット型にします。64ビット型は明らかに必要ですが、残りは特定の場合にのみ必要です(IMO)。
sqlite - この Rust コードは、"match" ステートメントなしで記述できますか?
linuxfood は sqlite3のバインディングを作成しました。これには感謝しています。Rust (0.8) を学び始めたばかりで、このコードが何をしているのかを正確に理解しようとしています。
私は基本的にそれが何をしているのか理解しています。データベース接続を取得しようとしており、エラーのテストも行っています。それがどのように行われているのか正確にはわかりません。
それをよりよく理解するために、ステートメントを除いて書き直したかったのmatch
ですが、それを行う知識がありません。それは可能ですか?sqlite::open()
2 つの変数を返すか、それとも 1 つだけを返すか?
この例は、ステートメントなしでどのように別の方法で記述できmatch
ますか? それが必要だとか好ましいと言っているわけではありませんが、言語を学ぶのに役立つかもしれません。
c - RustでC列挙型をラップすることは可能ですか?
RustでC列挙型をラップすることは可能ですか?
たとえば、C列挙型の例
rust - データベース変数をRustの関数に渡すにはどうすればよいですか?
私はRustを見始めたばかりです。私はデータベースを試してみたかったのですが、実験するのに適した sqlite リポジトリを見つけました。
sqlite データベース変数を関数に渡す「正しい」方法を知りたいです。コンパイラから最初に受け取ったエラー メッセージは、main() から関数に Db 変数を渡したときに、変数がなくなったことを示しているように見えたので、それを返しました。これは機能しているように見えますが、それが通常の方法であるとは思えません。私は多数のグローバル変数を信じているわけではありませんが、グローバル変数を作成しようとしましたが、その方法を見つけることができませんでした。
以下はテストプログラムです。私はまだ Rust の命名規則を使用していないことに注意してください。
問題の主な行は次のとおりです。
そして、代替手段は何ですか?なぜ(この場合)それを返す必要があるのですか?
プログラム例:
rust - 文字列と静的文字列の比較
これが私が試したことの例です。
私も見ましたequiv
が、運が悪いです。TARGET と比較する文字列は、所有されているポインター文字列でなければなりません。
rust - 何も一致しない場合、「一致」を使用してRustで何が起こりますか?
私はRustを学んでいて、とても面白そうです。私はまだ「一致」にあまり慣れていませんが、かなり統合されているようです。次のコード (以下) を使用して、次の行「_」の代わりにコメントアウトされた行「None」を含む文字列を i64 に変換していました。アンダースコアなしの不一致の場合はどうなるか、または「なし」がキャッチオールになる可能性があるかどうか疑問に思いました。calling-code には正の i64 が必要なので、負の結果は無効な入力になります (この場合)。おそらく構造体を使用する以外に、この例を使用してリターンでエラーを示すことができるかどうかはわかりません。
マッチアイテムとしてアンダースコアがない場合、「なし」はすべてをキャッチしますか?アンダースコアの代わりに使用できますか?
戻り値として構造体を使用せずに、このような関数でエラーを返すことは可能ですか?
一般に、「一致」を使用して不一致が発生する可能性はありますか? その場合はどうなりますか?
以下の例では、アンダースコアを使用する場合と「なし」を使用する場合に違いはありますか?
コード例:
global-variables - Rustでグローバル変数を使用することは可能ですか?
一般に、グローバル変数は避けるべきであることを私は知っています。それでも、実用的な意味では、(変数がプログラムに不可欠な状況では)それらを使用することが望ましい場合があると思います。
Rust を学ぶために、現在 GitHub で sqlite3 と Rust/sqlite3 パッケージを使用してデータベース テスト プログラムを作成しています。その結果、(私のテストプログラムでは) (グローバル変数の代わりとして) 12 ほどある関数間でデータベース変数を渡す必要があります。以下に例を示します。
Rustでグローバル変数を使用することは可能で実行可能であり、望ましいですか?
以下の例では、グローバル変数を宣言して使用できますか?
私は次のことを試しましたが、まったく正しくないようで、以下のエラーが発生しました(unsafe
ブロックでも試しました):
コンパイルに起因するエラー:
rust - Rustはf64からi64への変換で丸めをどのように処理しますか?
たとえば、通貨処理の小さなテストを行いました。ゴーアンドダーツ。基本的に、通貨を処理する最善の方法は、すべての計算が整数を使用して行われるようにするために double を整数に変換することであり、それが受け入れられている方法だと思います。ただし、整数への変換の扱いは言語によって異なります。たとえば、Go は double を切り捨てるため、丸め係数を追加して補正する必要があると思います。Rust を使用して、単純な変換 (以下を参照) が機能しているように見えますが、Rust が変換を処理するための 2 つの代替方法のように見えるものを使用して実際に変換を処理する方法がわかりません。
Rust は f64 から i64 への丸めをどのように処理しますか? また、「as i64」または「to_i64()」を使用するのに最適な方法は何ですか?
私が行ったタイミングに基づいて、ここでの 2 つの方法は同一ではないように見えますが、結果は同一である可能性があります。(「as i64」はわずかに高速に見えました)。
例 (小数点以下 2 桁のみを使用するように単純化 - 単一通貨):
最初の投稿から 14 時間後に編集:
さらにテストを行った後、Rustを使用してfloatからintegerへの変換を処理する方法は次のように思われます。
私は他の場所でそれを処理したので、私はそれでかなり快適ですが、もう少しテストします.