Rustの b"..." がよくわからなかった調べた
序文
Rustのb"..."
がよくわからなかったからコード書いて挙動を調べた。
実験
以下コードを走らせる。
参照:
fn main() { let s: &str = "myon"; let b: &[u8] = b"myon"; let v: Vec<u8> = "myon".bytes().collect(); let i: &[u8] = "myon".as_bytes(); println!("{}", s); println!("{:?}", b); println!("{:?}", v); assert_eq!(b, i); }
結果:
myon [109, 121, 111, 110] [109, 121, 111, 110]
b"..."
って何なんだ?
公式Doc.より引用:
Byte string literal; constructs a [u8] instead of a string
バイト文字列(byte string)を生成するんだな。
要はUTF-8にデコード(Rustの文字列はUTF-8のみ)する前の文字列を、スライス&[...]
として生成するものなのだろう。
(実際よくわからない)
まとめ
assert_eq!(b"myon", "myon".as_bytes());