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

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


1
Rustコンパイラーは、2つの可変参照がエイリアスできないと想定してコードを最適化しないのはなぜですか?
私が知る限り、参照/ポインタのエイリアスは、最適化されたコードを生成するコンパイラの機能を妨げる可能性があります。これは、2つの参照/ポインタが実際にエイリアスである場合に、生成されたバイナリが正しく動作することを保証する必要があるためです。たとえば、次のCコードでは、 void adds(int *a, int *b) { *a += *b; *a += *b; } フラグをclang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)付けてコンパイルすると、-O3 0000000000000000 <adds>: 0: 8b 07 mov (%rdi),%eax 2: 03 06 add (%rsi),%eax 4: 89 07 mov %eax,(%rdi) # The first time 6: 03 06 add (%rsi),%eax 8: 89 07 mov %eax,(%rdi) # …

4
なぜprintlnしないのですか?Rust単体テストで機能しますか?
次のメソッドと単体テストを実装しました。 use std::fs::File; use std::path::Path; use std::io::prelude::*; fn read_file(path: &Path) { let mut file = File::open(path).unwrap(); let mut contents = String::new(); file.read_to_string(&mut contents).unwrap(); println!("{}", contents); } #[test] fn test_read_file() { let path = &Path::new("/etc/hosts"); println!("{:?}", path); read_file(path); } この方法でユニットテストを実行します。 rustc --test app.rs; ./app これを実行することもできます cargo test テストに合格したが、println!画面に表示されないというメッセージが表示されます。何故なの?
284 rust  println 


2
240以上の要素を持つ配列をループするときにパフォーマンスに大きな影響があるのはなぜですか?
Rustの配列に対して合計ループを実行すると、CAPACITY> = 240のときにパフォーマンスが大幅に低下することに気付きました。CAPACITY= 239は約80倍高速です。 Rustが「短い」配列に対して行っている特別なコンパイル最適化はありますか? でコンパイルrustc -C opt-level=3。 use std::time::Instant; const CAPACITY: usize = 240; const IN_LOOPS: usize = 500000; fn main() { let mut arr = [0; CAPACITY]; for i in 0..CAPACITY { arr[i] = i; } let mut sum = 0; let now = Instant::now(); for _ in …

4
Rustで未使用のコード警告を無効にする方法は?
struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` --> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default 私はこれらの警告を深刻なもののために再びオンにしますが、私は言語をいじくり回しているだけであり、これが私をコウモリに駆り立てています。 #[allow(dead_code)]コードに追加してみましたが、うまくいきませんでした。

2
値とその値への参照を同じ構造体に格納できないのはなぜですか?
私には値があり、その値とその値内の何かへの参照を自分のタイプで保存したい: struct Thing { count: u32, } struct Combined<'a>(Thing, &'a u32); fn make_combined<'a>() -> Combined<'a> { let thing = Thing { count: 42 }; Combined(thing, &thing.count) } 時々、私は値を持っていて、その値とその値への参照を同じ構造に保存したいと思います: struct Combined<'a>(Thing, &'a Thing); fn make_combined<'a>() -> Combined<'a> { let thing = Thing::new(); Combined(thing, &thing) } 時々、値の参照すらしていなくても同じエラーが発生します: struct Combined<'a>(Parent, Child<'a>); fn make_combined<'a>() …


5
Rustで文字列を文字列リテラルと照合する方法は?
StringRust でaを一致させる方法を理解しようとしています。 私は最初にこのようにマッチングを試みましたが、Rustが暗黙的にstd::string::Stringto からキャストできないことを理解しました&str。 fn main() { let stringthing = String::from("c"); match stringthing { "a" => println!("0"), "b" => println!("1"), "c" => println!("2"), } } これにはエラーがあります: error[E0308]: mismatched types --> src/main.rs:4:9 | 4 | "a" => println!("0"), | ^^^ expected struct `std::string::String`, found reference | = note: expected type `std::string::String` …
199 string  match  rust 


4
ライブラリとバイナリの両方を含むRustパッケージ?
再利用可能なライブラリ(ほとんどのプログラムが実装されている)と、それを使用する実行可能ファイルの両方を含むRustパッケージを作成したいと思います。 Rustモジュールシステムのセマンティクスを混同していないとすると、Cargo.tomlファイルはどのようになりますか?
190 rust  rust-cargo 

7
Rustで文字列をintに変換しますか?
注:この質問には、廃止された1.0より前のコードが含まれています。答えは正しいです。 Rustでaをに変換するstrにはint、次のようにします。 let my_int = from_str::<int>(my_str); 私がa Stringをan に変換する方法を知る唯一の方法intは、それのスライスを取得し、それを次のように使用from_strすることです: let my_int = from_str::<int>(my_string.as_slice()); 直接変換する方法があるStringにはint?
186 rust 

2
Rustの正確な自動逆参照ルールは何ですか?
私はRustで学習/実験しています。この言語で見つけた優雅さの中に、私を困惑させ、まったく場違いのように見える1つの特殊性があります。 Rustは、メソッド呼び出しを行うときに、ポインターを自動的に逆参照します。正確な動作を確認するためにいくつかのテストを行いました。 struct X { val: i32 } impl std::ops::Deref for X { type Target = i32; fn deref(&self) -> &i32 { &self.val } } trait M { fn m(self); } impl M for i32 { fn m(self) { println!("i32::m()"); } } impl M for X { fn m(self) { …

4
iterとinto_iterの違いは何ですか?
私はこのコードスニペットを含むRust by Exampleチュートリアルをやっています: // Vec example let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; // `iter()` for vecs yields `&i32`. Destructure to `i32`. println!("2 in vec1: {}", vec1.iter() .any(|&x| x == 2)); // `into_iter()` for vecs yields `i32`. No destructuring required. println!("2 in vec2: {}", vec2.into_iter().any(| …
174 rust 

3
Rustの特性とHaskellの型クラスの違いは何ですか?
Rustの特性は、少なくとも表面的にはHaskellのタイプクラスに似ているように見えますが、それらの間にはいくつかの違いがあると人々が書いているのを見てきました。私はこれらの違いが何であるかを正確に疑問に思っていました。
157 haskell  rust  traits 

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