t_wの輪郭

Feedlyでフォローするボタン
文字もじれつ
『多コピーの原罪』String文字列を走査文字列結合format文字列の距離単純な文字列は汎用的文字列は二次元文字列完全一致文字列への回帰文字列リテラルcontents文字列化NFTのトークンはただの文字列linesto_lowercaseRustの文字列操作strCStrOsStr文字列を三次元に拡張する文字列を1文字ずつ配列化(サロゲートペアを考慮)文字列検索

『多コピーの原罪』

2022/3/26 16:27:00

https://blog.ojisan.io/many-copies-original-sin/


目次

  • Rust は GC を持たない
    • GC とは
    • Rust には GC がない
  • Clone と Copy とヒープについて
    • コピーできるもの・できないもの
    • ヒープに入るものは Copy しない
    • ヒープにあるものを Clone するとどうなるか
  • Rust における文字の種類
    • スライス
    • char
    • バイト列
    • String
    • &str
  • Rust で文字列を扱うためのプラクティス
    • イージーなやり方: すべて String
    • よくやるやり方: 戻り値だけ String
    • 入力を汎用的にする: Into
    • 理想的なやり方: 戻り値も &str
    • ライフタイム付きの参照で zero-copy の実現
    • いい感じに抽象化できるスマートポインタ、CoW
  • まとめ、感想、お気持ち

lines

2022/2/24 8:56:00

文字列を行ごとに繰り返すメソッド

let s = String::from("\
Rust:
safe, fast, productive.
Pick three.");
for line in s.lines() {
    println!("{}", line);
}

to_lowercase

2022/2/24 8:55:00

文字列を小文字にするメソッド

assert_eq!("Rust".to_lowercase(), "rust");
assert_eq!(String::from("Rust").to_lowercase(), String::from("rust"));

contents

2022/2/24 8:37:00

文字列にクエリ文字列を含むか確認するメソッド

let s = String::from("safe, fast, productive.");
println!("{}", s.contains("duct"));   //true
let s = "safe, fast, productive.";
println!("{}", s.contains("duct"));   //true

format

2022/2/19 15:00:00

文字列といろんなものを結合できるすごい関数マクロ
Displayが実装されていればなんでも結合できる気がする(要検証)


StringStringの結合

let hello:String = String::from("hello");
let world:String = String::from("world");
let hello_world = format!("{} {}", hello, world);
println!("{}", hello_world);   //hello world

String文字列リテラル&str)の結合

let hello:String = String::from("hello");
let world:&str = "world";
let hello_world = format!("{} {}", hello, world);
println!("{}", hello_world);   //hello world

String整数型u32)の結合

let hello:String = String::from("hello");
let number:u32 = 1234;
let hello_number = format!("{} {}", hello, number);
println!("{}", hello_number);   //hello 1234

CStr

2022/2/19 14:10:00

str

2022/2/19 14:03:00

文字列スライス

String

2022/2/18 21:34:00

Rustの文字列オブジェクト
文字のコレクション