今日leet変換のため簡単なコードを勉強がてらRustで書いた。
このコードを書く中で調べたことを備忘録がてら、こちらにも残しておく。
なお、私はRust初心者であり、ここにメモしたコードが必ずしも行儀の良いコードであるとは限らない、ということを先にこちらに書いておく。
目次
Rustで2次元配列を作る
Rust
を使って文字列を格納した二次元配列を作る方法。
型としては Vec<Vec<String>>
になる。
let foo_list = vec!["aaa", "bbb", "ccc"].iter().map(|s| s.to_string()).collect(); let bar_list = vec!["111", "222", "333"].iter().map(|s| s.to_string()).collect(); let two_dimensional_arr = vec![foo_list, bar_list];
vec!
内に定義した文字列を String
にするためにmap
でto_string()
を食わせながら配列化している。
そしてそこで生成した配列をさらに vec!
で格納している。
Rustのことはまだ全然なので、解説などは一応語らないでおきたい。
2次元配列系だと下記のようなやり方もあるらしいのだが、ちょっとまだよくわからないです...
文字列の一文字一文字をループで回す
渡ってきた文字列を1文字ずつループで回したいケースでは下記のように書ける。
for c in str.chars() { // Ⅰ文字ずつに対する処理 }
文字列に対して1文字ずつ何らかの処理を書きたいときは便利。
Rustで複数の型を返す関数を書く
複数の型を返す関数の書き方。
fn test_func() -> (bool, usize) { return (true, 1); } ・ ・ ・ let result = test_func(); // result.0 => true // result.1 => 1
複数の方はタプルで表現するらしい。
要素を参照する場合はresult.0
や result.1
という形で参照できる。
またタプル内の値は分解して変数に代入することもできる。
let (b, n) = result; println!("{}", b); // true println!("{}", n); // 1
だいぶ適当に書き散らかした備忘録という形だが、これにて以上です。