2024/01/28
はじめに
Rustでは、文字列を扱う時に &str
とString
のどちらを使うかがシチュエーションによって異なる。
例えば、From
トレイトを実装することで、型変換を実装することができる。
スニペット
以下のようにジェネリクスを設定するとよい。
struct Trimmed(String);
impl<S: AsRef<str>> From<S> for Trimmed {
fn from(s: S) -> Self {
Trimmed(s.as_ref().trim().to_owned())
}
}
impl Trimmed {
pub fn new<S: AsRef<str>>(s: S) -> Self {
Trimmed::from(s)
}
}
fn main() {
let trimmed = Trimmed::from(" Hello, world! ");
assert_eq!(trimmed.0, "Hello, world!");
let trimmed = Trimmed::new(String::from(" Hello, world! "));
assert_eq!(trimmed.0, "Hello, world!");
}
トレイトに対する場合はFrom
のところを参考にしたらよく、メソッドにはnew()
のところを参考にすると良い。