ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

rust所有权和函数

2019-12-03 09:57:34  阅读:11  来源: 互联网

标签:String 作用域 string some let fn 所有权 rust 函数



所有权与函数

fn main() {
   let s = String::from("hello");
   takes_ownership(s); //s的值移动到函数里
   
   let x = 5; //x进入作用域
   makes_copy(x); //x应该移动到函数里,但是i32是copy,所以后面可以继续使用x。

   println!("x is {}",x);
   //下面这句编译会出错, ^ value borrowed here after move
   //println!("s is {}",s);




}

fn takes_ownership(some_string:String){

    println!("{}",some_string);
} //some_string离开作用域并调用drop方法。占用的内存释放

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

返回值与作用域

fn main() {
    let s1 = gives_ownership(); //函数返回值some_string移动给s1
    let s2 = String::from("hello");  //s2进入作用域
    let s3 = take_and_give_back(s2); //s2移动但函数,然后移交给s3。最终只有s3有效

}

fn gives_ownership() -> String {
    let some_string = String::from("hello");
    some_string //因为some_string是String类型,所以这里做移动操作
}

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


标签:String,作用域,string,some,let,fn,所有权,rust,函数
来源: https://www.cnblogs.com/c-x-a/p/11974880.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有