タグ付けされた質問 「rust」

Rustは、安全性、速度、同時実行性の3つの目標に焦点を当てたガベージコレクターのないシステムプログラミング言語です。Rustで記述されたコードに関する質問には、このタグを使用します。[rust-2018]など、特定のエディションを必要とするコードを参照する質問には、エディション固有のタグを使用します。[rust-cargo]や[rust-macros]などのサブトピックには、より具体的なタグを使用してください。

11
コマンドラインパラメータにアクセスする方法
錆のチュートリアルでは、コマンドラインからパラメータを取る方法を説明していません。fn main()すべての例で、空のパラメーターリストでのみ表示されます。 からコマンドラインパラメータにアクセスする正しい方法は何mainですか?
153 command-line  rust 

5
Rustの実行可能ファイルが非常に大きいのはなぜですか?
Rustを見つけて、ドキュメントの最初の2つの章を読んだだけで、アプローチと言語の定義方法が特に興味深いと思います。指を濡らすことにし、Hello worldから始めました... 私はWindows 7 x64でそうしました。 fn main() { println!("Hello, world!"); } cargo build結果を発行して見ると、結果は3MBでtargets\debugあること.exeがわかりました。いくつか検索した後(貨物のコマンドラインフラグのドキュメントを見つけるのは難しい...)--releaseオプションを見つけて、リリースビルドを作成しました。驚いたことに、.exeのサイズは3MBではなく2.99MBとわずかに小さくなっています。 したがって、私がRustとそのエコシステムの初心者であることを告白すると、システムプログラミング言語が何かコンパクトなものを生み出すことが期待されていました。 Rustがコンパイルする対象について詳しく説明することはできますか?3ライナープログラムからこのような巨大な画像を生成することはどのようにして可能ですか?仮想マシンにコンパイルしていますか?私が逃したストリップコマンドはありますか(リリースビルド内のデバッグ情報?)?何が起こっているのかを理解できるかもしれない何か他に?
153 rust  rust-cargo 

2
RustプログラムはどのようにしてCargoパッケージのメタデータにアクセスできますか?
パッケージ内のRustコードからCargoパッケージのメタデータ(バージョンなど)にどのようにアクセスしますか?私の場合は、標準の--versionフラグを設定したいコマンドラインツールを構築しています。実装からパッケージのバージョンを読み取っCargo.tomlて、2つの場所で維持する必要がないようにしたいと考えています。プログラムからCargoメタデータにアクセスする理由が他にもあると思います。
150 rust  rust-cargo 


3
グローバルで変更可能なシングルトンを作成するにはどうすればよいですか?
システムでインスタンス化を1つだけ持つ構造体を作成して使用する最良の方法は何ですか?はい、これは必要です。これはOpenGLサブシステムであり、これの複数のコピーを作成し、どこにでも渡すと混乱を解消するのではなく、混乱を招きます。 シングルトンはできるだけ効率的である必要があります。Vecデストラクタ付きのが含まれているため、静的領域に任意のオブジェクトを格納することはできません。2番目のオプションは、静的領域に(安全でない)ポインタを格納し、ヒープに割り当てられたシングルトンをポイントすることです。構文を簡潔に保ちながら、これを行うための最も便利で安全な方法は何ですか。
140 rust 

1
Rust 1.xでファイルを読み書きする実際の方法は何ですか?
Rustは比較的新しいため、ファイルを読み書きする方法が多すぎます。多くは、誰かがブログのために思いついた非常に厄介なスニペットであり、私が見つけた例の99%(スタックオーバーフローでさえ)は、動作しなくなった不安定なビルドからのものです。Rustが安定したので、ファイルを読み書きするための単純で読み取り可能でパニックにならないスニペットとは何ですか? これは、テキストファイルを読み取るという点で機能するものに最も近いものですが、必要なものをすべて含めたのはかなり確かですが、まだコンパイルされていません。これは私がすべての場所のGoogle+で見つけたスニペットに基づいており、私が変更した唯一のことは、古いものBufferedReaderが今は次のようになっていることだけBufReaderです。 use std::fs::File; use std::io::BufReader; use std::path::Path; fn main() { let path = Path::new("./textfile"); let mut file = BufReader::new(File::open(&path)); for line in file.lines() { println!("{}", line); } } コンパイラは文句を言う: error: the trait bound `std::result::Result<std::fs::File, std::io::Error>: std::io::Read` is not satisfied [--explain E0277] --> src/main.rs:7:20 |> 7 |> let mut file …
136 file-io  rust 


3
同じプロジェクトの別のファイルのモジュールを含める方法は?
このガイドに従って、Cargoプロジェクトを作成しました。 src/main.rs fn main() { hello::print_hello(); } mod hello { pub fn print_hello() { println!("Hello, world!"); } } 私が使っている cargo build && cargo run エラーなしでコンパイルされます。現在、メインモジュールを2つに分割しようとしていますが、別のファイルからモジュールを含める方法がわかりません。 私のプロジェクトツリーはこのように見えます ├── src ├── hello.rs └── main.rs およびファイルの内容: src/main.rs use hello; fn main() { hello::print_hello(); } src/hello.rs mod hello { pub fn print_hello() { println!("Hello, …
130 rust 

4
Rustの128ビット整数「i128」は64ビットシステムでどのように機能しますか?
Rustには128ビットの整数があり、これらはデータ型i128(およびu128unsigned int)で示されます。 let a: i128 = 170141183460469231731687303715884105727; Rustはこれらのi128値を64ビットシステムでどのように機能させますか。たとえば、これらをどのように計算しますか? 私の知る限りでは、値はx86-64 CPUの1つのレジスターに収まらないため、コンパイラーは何らかの方法で1つのi128値に2つのレジスターを使用しますか?あるいは、それらを表すために何らかの大きな整数構造体を代わりに使用していますか?

1
借用したコンテンツから移動できない、または共有参照の背後から移動できない
エラーがわかりませんcannot move out of borrowed content。何度も受け取って解決してきましたが、なぜなのかわかりません。 例えば: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { self.buffer.push(*current_char as char); } println!("{}", line); } エラーを生成します: error[E0507]: cannot move out of borrowed content --> src/main.rs:31:33 | 31 | for current_char in line.into_bytes().iter() { | ^^^^ cannot move out of borrowed …


2
関数の引数として文字列(&String)、Vec(&Vec)、またはボックス(&Box)への参照を受け入れることが推奨されないのはなぜですか?
私は&String引数としてaを取るRustコードをいくつか書きました: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } Vecまたはへの参照を取り込むコードも作成しましたBox。 fn total_price(prices: &Vec<i32>) -> i32 { prices.iter().sum() } fn is_even(value: &Box<i32>) -> bool { **value % 2 == 0 } しかし、私はこのようにするのは良い考えではないというフィードバックを受け取りました。何故なの?

3
文字列のベクトルに対する結合演算子に相当するものは何ですか?
Stringsのベクトルに対する "join"演算子と同等のRustを見つけることができませんでした。私にはがありVec<String>、それらをシングルとして参加したいString: let string_list = vec!["Foo".to_string(),"Bar".to_string()]; let joined = something::join(string_list,"-"); assert_eq!("Foo-Bar", joined); 関連: Rustでスペースで区切られたイテレータを印刷する慣用的な方法は何ですか?
120 string  rust 

2
Rustで 'let x = x'は何をしますか?
私はこのコードを実際に見ました: fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap()); let fields = fields; let fields = fields;ラインは何をしますか?なぜそこにあるのですか?
117 rust 

1
イテレーター(またはその他の特性)を返す正しい方法は何ですか?
次のRustコードは問題なくコンパイルおよび実行されます。 fn main() { let text = "abc"; println!("{}", text.split(' ').take(2).count()); } その後、私はこのようなものを試しました...しかし、それはコンパイルされませんでした fn main() { let text = "word1 word2 word3"; println!("{}", to_words(text).take(2).count()); } fn to_words(text: &str) -> &Iterator<Item = &str> { &(text.split(' ')) } 主な問題は、関数にto_words()必要な戻り値の型がわからないことです。コンパイラは言う: error[E0599]: no method named `count` found for type `std::iter::Take<std::iter::Iterator<Item=&str>>` in the current scope …
114 rust 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.