Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

Rust の to_owned() って何

to_owned()

https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned

  • &の参照に対して使う
  • 参照元の値をクローンする
  • クローンした上で所有権も新規にする(参照元の方の所有権はそのまま)

fn main() {
    {
        let s1: &str = "foo";
        let s2: &str = (&s1).to_owned();
        println!("{}", s1);
        println!("{}", s2);
    }
    {
        let s1: String = "bar".to_string();
        let s2: String = (&s1).to_owned();
        println!("{}", s1);
        println!("{}", s2);
    }
    {
        let v1: Vec<i32> = vec![0, 1, 2, 3, 4, 5];
        let v2: Vec<i32> = (&v1[1..3]).to_owned();
        println!("{:?}", v1);
        println!("{:?}", v2);
    }
}
foo
foo
bar
bar
[0, 1, 2, 3, 4, 5]
[1, 2]