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

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

3
ガベージコレクターの代わりにRustには何がありますか?
Rustにはガベージコレクターがないことを理解しており、バインディングがスコープ外になったときにメモリがどのように解放されるのか疑問に思っています。 したがって、この例では、Rustがスコープ外になると、「a」に割り当てられたメモリを再利用することを理解しています。 { let a = 4 } 私がこれに関して抱えている問題は、第一にこれがどのように起こるかであり、第二にこれは一種のガベージコレクションではありませんか?「典型的な」ガベージコレクションとどう違うのですか?
95 rust 

3
バイトのベクトル(u8)を文字列に変換する方法
Rustで単純なTCP / IPクライアントを作成しようとしています。サーバーから取得したバッファーを出力する必要があります。 Vec<u8>(またはa &[u8])をa に変換するにはどうすればよいStringですか?
94 rust 

1
Rustの「ファットポインター」とは何ですか?
「ファットポインタ」という用語はすでにいくつかの文脈で読んだことがありますが、それが正確に何を意味し、Rustでいつ使用されるかはわかりません。ポインタは通常のポインタの2倍の大きさのようですが、理由がわかりません。また、特性オブジェクトと関係があるようです。
94 pointers  rust 

1
整数から文字列に変換するにはどうすればよいですか?
型を整数から文字列に変換するコードをコンパイルできません。Rust for Rubyistsチュートリアルの例を実行しています。このチュートリアルには、次のようなさまざまな型変換があります。 "Fizz".to_str()および num.to_str()(ここnumで、は整数です)。 これらのto_str()関数呼び出しの大部分(すべてではないにしても)は非推奨になっていると思います。整数を文字列に変換する現在の方法は何ですか? 私が得ているエラーは次のとおりです。 error: type `&'static str` does not implement any method in scope named `to_str` error: type `int` does not implement any method in scope named `to_str`

1
非字句の存続期間とは何ですか?
Rustには、長い間この言語での実装が承認されている非字句の存続期間に関連するRFCがあります。最近、Rustによるこの機能のサポートは大幅に改善され、完全であると見なされています。 私の質問は、非字句の寿命とは正確には何ですか?

9
なぜ一意の匿名型で言語を設計するのですか?
これは、C ++ラムダ式の機能として常に私を悩ませてきたものです。C++ラムダ式のタイプは一意で匿名であり、単に書き留めることはできません。構文的にまったく同じ2つのラムダを作成した場合でも、結果の型は異なるものとして定義されます。その結果、a)ラムダは、コンパイル時の無名型をオブジェクトと一緒に渡すことができるテンプレート関数にのみ渡すことができ、b)ラムダは、を介して型が消去された場合にのみ有用になりますstd::function<>。 わかりました、しかしそれはC ++がそれをする方法です、私はその言語のただの厄介な機能としてそれを書き留める準備ができていました。ただし、Rustが同じように見えることを知りました。各Rust関数またはラムダには一意の匿名型があります。そして今、私は疑問に思っています:なぜですか? だから、私の質問はこれです: 言語デザイナーの観点から、言語にユニークな匿名タイプの概念を導入することの利点は何ですか?


2
useとexternの違いは何ですか?
Rustは初めてです。これは、use識別子を現在のスコープにインポートexternするために使用され、外部モジュールを宣言するために使用されると思います。しかし、この理解(おそらく間違っている)は私には意味がありません。Rustがこれらの2つの概念を持っている理由と、それらを使用するのに適したケースは何かを誰かが説明できますか?
91 rust 


1
単一のアポストロフィで示されるRustタイプは何ですか?
Rustで、単一のアポストロフィで示されるいくつかのタイプに遭遇しました。 'static 'r 'a そのアポストロフィの重要性は何ですか?多分それは参照の修飾子です(&)?参照に固有のジェネリックタイピング?このためのドキュメントがどこに隠れているのかわかりません。
89 rust 

2
Rust関数をパラメーターとしてどのように渡しますか?
関数をパラメーターとして渡すことはできますか?そうでない場合、良い代替手段は何ですか? いくつかの異なる構文を試しましたが、正しい構文が見つかりませんでした。私はこれができることを知っています: fn example() { let fun: fn(value: i32) -> i32; fun = fun_test; fun(5i32); } fn fun_test(value: i32) -> i32 { println!("{}", value); value } しかし、それは関数をパラメーターとして別の関数に渡していない: fn fun_test(value: i32, (some_function_prototype)) -> i32 { println!("{}", value); value }
89 rust 



5
Option <String>からOption <&str>への変換
非常に頻繁に私は Option&lt;String&gt;計算からありますが、この値またはデフォルトのハードコードされた値のいずれかを使用したいと思います。 これは整数では簡単です。 let opt: Option&lt;i32&gt; = Some(3); let value = opt.unwrap_or(0); // 0 being the default しかし、aStringとaを使用すると&amp;str、コンパイラは型の不一致について文句を言います。 let opt: Option&lt;String&gt; = Some("some value".to_owned()); let value = opt.unwrap_or("default string"); ここでの正確なエラーは次のとおりです。 error[E0308]: mismatched types --&gt; src/main.rs:4:31 | 4 | let value = opt.unwrap_or("default string"); | ^^^^^^^^^^^^^^^^ | | | expected struct …
85 rust 

1
Rustのオプションタイプのオーバーヘッドは何ですか?
Rustでは、参照がnullになることはないため、リンクリストなど、実際にnullが必要な場合は、次のOptionタイプを使用します。 struct Element { value: i32, next: Option&lt;Box&lt;Element&gt;&gt;, } 単純なポインタと比較して、メモリ割り当てと逆参照の手順に関して、これにはどのくらいのオーバーヘッドが含まれますか?コンパイラ/ランタイムに、同じ構造を使用して非コアライブラリに自分でOption実装Optionしたりenum、ポインタをベクトルでラップしたりする場合よりも、コストをかけずに、またはコストを抑えた「魔法」がありますか?

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