«

Rust - 所有权

ljierui 发布于 阅读:115 技术杂谈


1、所有权

1.1、所有权概念

1.2、栈内存和堆内存

1.3、所有权存在的原因

1.4、所有权规则

1.5、String类型

fn main() {
    // 创建一个string类型的字符串
    // 因为string类型的字符串是可以修改的
    let mut name = String::from("Hello");
    name.push_str(", World");
    println!("{}", name);
}

1.6、变量和数据交互的方式:移动(Move)

let s1 = String::from("hello");
let s2 = s1; // 所有权转移给 s2
// 此时 s1 不再有效

1.7、Copy特征

let x = 5;
let y = x; // x 的值被复制到 y
// 此时 x 仍然有效

1.8、所有权与函数

fn main() {
    let s = String::from("Hello World");

    take_ownershop(s);

    let x = 5;

    makes_copy(x);

    println!("x:{}",x);

}

fn take_ownershop(some_string: String){
    println!("{}", some_string);
}

fn makes_copy(some_number:i32) {
    println!("{}",some_number);
}

1.9、返回值与作用域

fn main() {
    let s1 = gives_ownership();

    let s2 = String::from("hello");

    let s3 = takes_and_gives_back(s2);

}

fn gives_ownership() -> String{
    let some_string = String::from("hello");
    some_string
}

fn takes_and_gives_back(a_string:String) -> String{
    a_string
}

rust语言学习

推荐阅读: