技術記事以外

技術記事以外の振り返りやその日学んだことのちょっとしたメモなどを置く予定です

Rust

今日の学習メモ

盲目的にLintのお心のままに書いてたらusizeがビット数であることを忘れており計算が狂って全く答えが出なかった。

今日の学習メモ

別にRustに限った話ではないんだけど、うっかり文字列のまま数字を比較してしまうと 文字列の場合は単純に前から1文字ずつ比較するから、 桁数少なくても頭の数字が大きい方が大きくなるので答えがおかしくなる e.g. "10" と "9" だと "9" > "1" で "9"の方…

今日の学習メモ

qiita.com ちょっと前に少し齧った時に詰まった部分が見事に網羅されていていい復習になった

今日の学習メモ

The Slice Type - The Rust Programming Language &str はスライスである スライスは文字列の一部分だけ = 直接バイトを選択して指している = ストリングリテラル String の一部を抽出したもの = スライス = &s[1..2] = &str 関数の引数が &String なら &str…

今日の学習メモ

Rustのライフタイムとか所有権は馴染みがないのでとても難しい numb86-tech.hatenablog.com なんとなく一番わかりやすかったのでメモ doc.rust-lang.org メモリについて全く気にしなくていい言語もあれば、自分で allocate したり解放したりしないといけない…

今日の学習メモ

https://crates.io/crates/console_error_panic_hook Rust で wasm するときはこれを入れておくとちゃんとエラーメッセージが出て便利(素のままだとunreachableみたいなRuntime error しか出ない)

今日の学習メモ

Rust while letとif let、面白い記法だなあ if let Some(n) = value_in_option_type するとdestructureして判定してくれる

今日の学習メモ

Rustのエラーハンドリング Goと同じで返り値で判定 末尾に?をつけることで呼び出し元に処理を任せられる Result型を使って、Okで返すものとErrで返すものを分けるのが一般的 返されたエラーはmatchで処理するかResult型のデフォルトのメソッドを使うかになる

今日の学習メモ

StructのUpdate let variable = Order { name: String::from("bob"), ..current_order } のような感じで既存のStructを上書きできる。微妙にTypeScriptのスプレッド演算子よりピリオドの数少ないから混乱しそう。

今日の学習メモ

RustとかPythonのだとifをインラインで書くのが普通なんだなあ(Pythonの三項演算子<true value> if <condition> else <false value> とか) いやもちろんJSでもかけるけど、わざわざ書かなくてもA ? B: Cとかで良いからあんまりやらない気がする</false></condition></true>