Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rustちょっと触ってみた

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 Rustちょっと触ってみた

Avatar for Hiroaki Osawa

Hiroaki Osawa

January 17, 2020
Tweet

More Decks by Hiroaki Osawa

Other Decks in Programming

Transcript

  1. 所有権 変数の束縛には所有権をもたせるという特性がある。 let v = vec![1, 2, 3]; let v2

    = v; println!("v[0] is: {}", v[0]); 所有権が v2 に移⾏しているためヒープ上の 1, 2, 3 という実データに対して v も v2 も参照し ている状態は Rust 的に OUT
  2. ⽂字列型の種類が複数 いわゆる⽂字列には、メモリ⻑が決定されている組み込みの str と、メモリ⻑が固定さ れていない標準ライブラリにある String 型がある。 String 型はヒープ(スレッド間で共有できるメモリ領域)に格納可変。 str

    の実データは作成⽅法によって異なる。 実際にコード内で "string" のように書くと静的領域に実データのある &str 型になるので Github からのレスポンスを String として扱う時に⾊々変換しなくてはならない。
  3. Result 型と Option 型 多くの関数がこの 2 つのうちどちらかを返すことが多い。 Option は None

    もしくは Some(値)を返すという型。 None は null のようなもの。 返り値書くときには Some(1) や None という書き⽅をする。 Result 例えば run みたいな関数があったとして pub fn run(args: Vec<String>) -> Result<i32, Box<dyn Error>> ようにエラーを返すかもしれないことを明記できる型。 返り値書くときには Ok(1) や Err(ParseError) という書き⽅をする。 これらの型で返された値を実際の値として扱うには unwrap() をするか、 process(args)? のように末尾に ? 演算⼦をつけて例外や None が出たら関数全体としてエ ラーや None を返すということを明⽰する必要がある。