Questions tagged [rust]

Rustは実験的な並列かつマルチパラダイムのプログラミング言語である。主任開発者はグレイドン・ホアレである。Rust言語の文法はC言語やC++言語に類似しており、性能はC++言語に匹敵するものになっている。

Rustはパフォーマンス、型安全性、並行性を重視したプログラミング言語である。文法はC言語やC++言語に類似しており、性能はC++言語に匹敵するものになっている。

所有権システムにより、ガベージ・コレクタを使用せずに自動的なメモリ管理が行われ、すべての参照が有効なメモリを指すことを意味するメモリ安全性が満たされていることがコンパイル時にチェックされる。Rustは不変性、高階関数、代数的データ型など、関数型プログラミングのアイデアの影響も受けている。

104 questions
8
votes
1 answer

Rustに於いての「.iter()」メソッド等イテレータの存在意義とは

// Code 1 fn main(){ for vect in vec![0,1,2,3,4,5,6,7,8,9].iter(){ println!("{}",vect); } } 例えば上記のコードを実行すると、縦に整列した10個の数字を得ることができます。同時に、 // Code 2 fn main(){ for vect in vec![0,1,2,3,4,5,6,7,8,9]{ println!("{}",vect); …
Remo Giazotto
  • 397
  • 2
  • 13
8
votes
1 answer

Rustの"unwrap()"は何をするものですか?

Rust言語を最近はじめました。 stdライブラリから少しずつコードを読んでいますが、 一つわからないことがあります。 頻繁に出てくるunwrap()函数が、 何のために、何に対して、何を返してるのか、が把握できません。 英語のドキュメントをみても、いまいち意味が飲み込めず、、。 ご存知の方がいましたら、ご教授ください。
mito
  • 83
  • 1
  • 1
  • 4
6
votes
2 answers

Rust: Vec にトレイトを実装したオブジェクトを格納したい

スタックに "Trait を実装したオブジェクト" を格納したいです。 Rust では Vec をスタックとして使うのが通例だということで、以下のコードを書いたのですが、Trait のサイズがコンパイル時に定まらないので Vec には格納できません。 (コンパイルエラー) 代替案、または解決策はあるでしょうか。 trait Trait{} struct Struct { a: Vec> } fn main()…
perrier
  • 179
  • 1
  • 8
5
votes
1 answer

マルチスレッドで配列の和を取りたい

以下の内容をお聞きしたいです。 背景 マルチスレッドについて少し触ったので配列を分割して和を、各スレッドで取得できるようにしようと考えました。 そこで以下のコードを作成しました。 main.rs(playground) use rand::prelude::*; use std::thread; use std::sync::Arc; use std::sync::atomic::{AtomicUsize, Ordering}; fn main() { const N:…
tbt
  • 231
  • 1
  • 8
5
votes
1 answer

Rustの所有権周りについて

言語処理100本ノックの4問目をRustで解いています。 use std::collections::HashMap; pub fn problem04() { let s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."; let sw: Vec<&str> =…
shiomiya
  • 127
  • 2
  • 10
5
votes
1 answer

Rustのmap関数に関して

只今Rustを勉強していますが、mapがあまり理解できていなくて困っております。 Rustの説明を見ると、iterがコールされたときに渡されたクロージャーが実行される、という内容と解釈しております。少なくとも、mapはIteratior構造体に実装された関数かと思います。よって、vectorのようなものに対し、mapが実装されているのは理解できます。 しかし、理解できないのが、futures::sync::mpscにあるUnboudedReceiverに対してmap関数が実行されているコードを見…
mr_big
  • 51
  • 1
5
votes
1 answer

メソッド呼び出し時のDerefの優先度

RustでDeref時の優先度について質問です。 pub trait T { fn func(self); } pub struct A {} impl<'a> T for &'a A { fn func(self) { println!("impl &A"); } } impl<'a> T for &'a mut A { fn func(self) { println!("impl &mut A"); …
termoshtt
  • 791
  • 3
  • 14
4
votes
3 answers

Rust By Exampleに書いてある「名前付きタプル」とは何ですか?

Rust初心者です。Rust By Exampleの構造体の章 に、 structというキーワードを用いて作成できる構造体には3種類あります。 タプル。(ほとんどの場合は名前付きタプル) クラシックなC言語スタイルの構造体。 ユニット。これはフィールドを持たず、ジェネリック型を扱う際に有効です。 と書いてあり、このあとにサンプルコードも載っていたのですが、「名前付きタプル」とはどれなのかがわかりませんでした。 わかる方がいらっしゃいましたら教えてください。
yuma
  • 43
  • 4
4
votes
1 answer

flat_mapの中で async/awaitを使う場合

flat_map内でFuture functionをコールした場合 どのようにasyncをflat_mapに記述すれば良いですか。 async fn gen_str() -> Result, String> { Ok(vec!["a".to_string(), "b".to_string()]) } async fn gen_list(msg: &str) -> Result, String> { …
cats
  • 354
  • 2
  • 12
4
votes
1 answer

Rustのreqwestを使ったJSON APIの扱いについて

reqwestを使って、とあるJSON APIを呼び出そうとしています。レスポンスを構造体に格納してResultに含んで返し、外部関数から呼び出せるようにしたいのですが、コンパイルが通らず、しばらく格闘したのですが解決方法が見つからないため、ご教授いただきたいです。 ソースコード const STEAM_API_KEY: &str = "****"; const STEAM_ID: &str = "****"; use serde::{Deserialize,…
shiomiya
  • 127
  • 2
  • 10
4
votes
1 answer

Rustでのエラー『type parameter `_` must be used as the type parameter for some local type』について。

現在ironフレームワークを用いたWebプログラミングを勉強しています。 その中でセッション周りの実装の際に、ironが提供するトレイトを実装している型をキーにしていろいろやり取りをするのですが、以下のようにわかりやすく実装しなおそうと思っています。(説明が長くなりますすみません...) セッションを扱うには、自身で定義した2つのstruct(Session,…
glaceef
  • 103
  • 8
4
votes
1 answer

rust-ndarrayのdot()を用いるとリンクエラーが起きます

動作環境: Windows 10 home 64bit rustc 1.26.2 stable host x86_64-pc-windows-msvc extern crate ndarray; use ndarray::{arr2}; fn main() { let a = arr2(&[[1., 2.],[3., 4.]]); println!("{:?}", a); } こちらはcargo runで正常に動作するのですが、 extern crate…
meo
  • 91
  • 5
4
votes
1 answer

Rust: Rc にトレイト std::op::Add を実装させたい

オペレータオーバーロードしたいです。単純な Struct ならいいのですが、 Rc に std::op::Add を実装させようとすると、コンパイルできません。解決策はあるでしょうか。 use std::rc::Rc; use std::ops::Add; struct Struct; // コンパイルできない impl Add for Rc { type Output = Rc; fn add(self, rhs:…
perrier
  • 179
  • 1
  • 8
3
votes
2 answers

構造体のフィールドのvecをループさせながら、内容に応じてミュータブルなメソッドを呼び出すときはどのようにすればよいですか?

最近Rustを始めた初心者ですが、タイトルのような状況でどうすればよいかと考えています。 ある処理を後でまとめて行うためにフィールドのvecに処理をenumとして格納し、まとめて実行するために以下のようなコードを書きました。 struct Data { data: Vec, operations: Vec, } enum Operation { A(usize), B(usize), C(usize,…
yuyohi
  • 33
  • 3
3
votes
2 answers

map で Result を引き回すときに Err を意識したくない

(端的に説明できる自信が無いので、冗長ですが考えた順に記述しています…) Rust by Example 日本語版 > 18.5. Resultをイテレートする の冒頭のコード fn main() { let strings = vec!["tofu", "93", "18"]; let numbers: Vec<_> = strings .into_iter() .map(|s| s.parse::()) …
1
2 3 4 5 6