at backyard

Color my life with the chaos of trouble.

Rustで2次元配列を作る、文字列の一文字一文字をループで回す、複数の型を返す関数を作る

今日leet変換のため簡単なコードを勉強がてらRustで書いた。

github.com

このコードを書く中で調べたことを備忘録がてら、こちらにも残しておく。
なお、私は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 にするためにmapto_string() を食わせながら配列化している。
そしてそこで生成した配列をさらに vec! で格納している。

Rustのことはまだ全然なので、解説などは一応語らないでおきたい。

2次元配列系だと下記のようなやり方もあるらしいのだが、ちょっとまだよくわからないです...

stackoverflow.com

文字列の一文字一文字をループで回す

渡ってきた文字列を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.0result.1という形で参照できる。

またタプル内の値は分解して変数に代入することもできる。

let (b, n) = result;
println!("{}", b); // true
println!("{}", n); // 1

だいぶ適当に書き散らかした備忘録という形だが、これにて以上です。