TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Rust

Rust: use std::io::prelude::*;

Rustでファイル操作をするときにpreludeとuseするのが気になったので、備忘録として残します。 std::io::prelude std::io::prelude - Rust よく使用されるioのtraitをimportしてくれる便利なもの コード 以下のコードはファイルを読み込んでprintする use st…

Rust: VSCodeでlibに追加したものをuseすると補完が効かない時

lib.rsで追加したものをmain.rs内でuseして使おうとすると、VSCodeの補完が出ない時がありました。 現象 // プロジェクト名: osaka src > lib.rs > main.rs use osaka::Takoyaki; fn main() { let takoyaki = Takoyaki {x: 777}; } このような感じで記述する…

Rust: VSCodeでlibを追加すると認識してくれない時

VSCodeでRustを書いているのですが、libを追加して、それをmain.rs関数の中でuseしてもパスを認識してくれず、赤い波線が表示されてしまいます。rustのコンパイルは通るので文法は間違っていないはずです。Must reload VSCode window after adding lib.rs to…

Rust: gitのincludeIfで設定したgitconfigがCargo newで生成されるCargo.tomlに反映されない

現象 includeIfをしようしてgitconfigを切り替えている場合に、cargo new をするとCargo.tomlのauthorsに切り替えたgitconfigの情報が入らずに、globalで設定しているgitconfig情報が入ってしまう。例えばglobalのgitconfigの設定が username: global_takoy…

Rust: 型推論で型(タイプヒント)の部分省略

イテレーターの特定メソッドについて調べていたら、型を部分省略する方法があったのでメモします。イテレータRust 公式チュートリアルより抜粋 もしあなたが覚えているなら、 ::<> 構文で型ヒント(type hint)を与え、整数型のベクタが欲しいと伝えることがで…

Rust: enumのコンストラクターは関数のようにふるまえる

stringの限界 | Rust by Example Rust Examplesよりmap_errの引数は関数であるのにenumを直接ドーンと代入している箇所があって、どういうことか疑問に思ったので調べてみました。 現象 map_errの引数はFnOnce(E) -> Fであるのに関数の代わりにenumを渡して…

Rust: エラー処理のための「Try!」と「?」

try!入門 | Rust by Example こちらのサンプルコードで fn setup() -> std::io::Result<()> { let mut a = try!(File::create("a")); try!(a.write_all(b"grape")); let mut b = try!(File::create("b")); b.write_all(b"fruit") } を実行すると expected ex…

Rust: map VS and_then

Rustのmapとand_thenが最初見たときにどちらも加工するという処理なのに、どういう時に使いわけるかイメージできなかったので、まとめてみました。 (Option型にも使用できますが、例はResultにしています。) map returnの型: Result functionの型: FnOnce(T)…

Rustのライフタイムはスコープとは同じものではない

ライフタイムとは ライフタイム | Rust by Example コンパイラ(借用チェッカーと呼ばれる場合もあります)が、全ての借用に問題がないことを確認するために使用する仕組み ざっくりライフタイムの使い所 借用するときに使える (&とほぼペア) ライフタイムの例…

Rust: Traitの匿名の引数 (Anonymous trait parameter)は廃止されていた

関連型が必要になる状況 | Rust by Example このサンプルを行っていた時に trait Contains<A, B> { fn contains(&self, &A, &B) -> bool; } // expected one of `:`, `@`, or `|`, found `)` が出て動作しませんでした。 https://users.rust-lang.org/t/solved-exa</a,>…

Rustでmodはネストできない

ファイルの階層構造 | Rust by Examplemodの使い方を練習していたのですが、サンプルではmy/mod.rsにもmodを書いて階層化をしていたので、パスのようにmod my::nestedでnestedファイルのfunctionだけ呼びたい場合、できるかどうか試してみましたが、できませ…

Rust 範囲のシンタックス 「...」VS 「..=」

match | Rust by Example このサイトでパターンマッチの練習していた時に範囲を表す記法で...を使うと警告が出ました fn main() { let number = 13; println!("Tell me about {}", number); match number { // 単一の値とのマッチをチェック 1 => println!("…

Rust: i8のキャストと2の補数

型キャスティング | Rust by Example このサイトで型キャスティングを学びました。 その時 2の補数で型のキャスティングが行われると符号が反転する場合があることを知りましたので、まとめてみます。 現象 // 符号付きの型にキャストする場合、結果は以下の…

RustのLinked ListのサンプルでBox<T>の使い方を学習した

Digital Puppet - プログラミングパズルTatsuya Nakanoゲーム無料apps.apple.com Linked ListのサンプルでBoxの使い方が出ていて、理解が深まったので備忘録として置いておきます。 コード テストケース: 連結リスト | Rust by Example ここより拝借 use Lis…

VSCodeでRustインストールしたのに「Rustup not available」が出るとき (備忘録)

Rustインストールしたのになぜか、「Rustup not available」が出てきて、左下のところでrustを解析中みたいな感じで、くるくるローディングし続けていたので、検索したら以下の記事がヒットしました。 qiita.com手順は Rustインストール Pathを通す VSCodeの…