PNGを端末に表示するプログラムを作りました。
使い方
cargo run /Path/to/Windows_logo.png
とすると、👇のように端末に画像が表示されます。透過画像も表示できます。
ちなみに、PNGの画像形式は何パターンかあるのですが、そのすべてに対応してるわけではないので、表示できない画像もあります。あしからず。
続きを読むVectorをIteratorに変換する時にいつも混乱していたので整理した。
あるVectorの要素すべてを3倍するコードを考える。
fn main() { let vec1 = vec![1,2,3,4,5]; let vec2 = vec1.iter() .map(|i| i * 3) .collect::<Vec<i32>>(); println!("{:?}", vec1); println!("{:?}", vec2); }
このコードはコンパイルできるが、以下のような疑問がある。
vec1
はなぜ使えるのか? 3行目の vec1.iter()
で使われているじゃないか!map(|i| i * 3)
の i
は参照なのか値なのか?これらの疑問に関する答えは、
iter()
はVectorをmoveしない。into_iter()
はVectorをmoveする。iter()
はVectorから「参照のコレクションであるIterator」を作成し、into_iter()
はVectorから「値のコレクションであるIterator」を作成する。ということになる。
続きを読む