`

rust中的ownership, references-and-borrowing, ifetimes

    博客分类:
  • rust
 
阅读更多

We call the &T type a ‘reference’, and rather than owning the resource, it borrows ownership

 

 error: cannot borrow `v` as mutable more than once at a time [E0499]

fn main() {
    let mut v = vec![1, 2, 3];
    let v1 = &mut v;
    for i in &mut v {
        *i += 1;
    }
}  

 

fn main() {
    let mut v = vec![1, 2, 3];
    for i in &mut v {  借用生命周期只在循环内
        *i += 1;
    }
    let v1 = &mut v;
}

 

fn main() {
    struct Point {
        x: i32,
    }
    let mut p = Point{x: 1};
    {
        let plus = |x: i32| x + p.x;   //borrow
        println!("{}", plus(1));
    }
    {
        let mut plus = |x: i32| {p.x += x; p.x};   //mut borrow
        println!("{}", plus(1));
    }
    {
        let plus = move|x: i32| x + p.x;   //ownship move
        println!("{}", plus(1));
    }
    let y = &p; //error: use of moved value: `p`

}

 

分享到:
评论

相关推荐

    Rust 程序设计语言 简体中文版.pdf

    Rust的核心概念包括所有权(Ownership)、引用与借用(References and Borrowing)、数据类型、函数、控制流(Control Flow)、结构体(Structs)、枚举(Enums)、模式匹配(Pattern Matching)、模块(Modules)和...

    Rust程序设计语言第二版(2018年12月版)

    Rust的所有权系统包括了借用(borrowing)、引用(references)和生命周期(lifetimes)等概念。这些机制让Rust能够在编译时确保内存安全,而无需垃圾回收器(garbage collector)。 Rust语言还特别强调并发编程的...

    The Rust Programming Language.pdf

    3. **引用和借用(References and Borrowing)**:Rust中的引用是不可变的,默认情况下,不能通过引用改变值。如果需要修改,可以使用可变引用。借用允许在不复制数据的情况下访问它,同时遵循所有权规则。 4. **...

    学习Rust需要的词库.xls

    5. **引用与借用(References and Borrowing)**: 引用是不可变的默认,使用`&`符号声明。`&mut`允许可变借用,但一次只能有一个。 6. **函数(Functions)**: Rust函数可以有默认参数,可以是`fn`或`async fn`...

    Rust语言教程 0220.zip

    3. **引用与借用(References & Borrowing)**:Rust有可变引用和不可变引用两种类型,它们都必须遵守严格的规则。不可变引用不能修改所引用的数据,而可变引用在同一时间只能有一个。 4. **函数与闭包(Functions ...

    exercism-rust

    2. ** Ownership and Borrowing**:理解Rust的核心概念——所有权系统,它是如何管理内存和防止数据竞争的。学习借用(borrowing)和生命周期的概念,以及它们如何影响代码的内存安全。 3. **References and ...

    生锈的书

    3. **借用(Borrowing)与引用(References)**:在Rust中,你可以通过引用访问数据而无需转移所有权。引用必须始终保持不变,要么是可变引用(`&mut T`),允许唯一且可变的访问,要么是不可变引用(`&T`),提供...

    pir-ss21-oop

    5. **借用(Borrowing)和引用(References)**:在 Rust 中,可以通过引用访问其他变量的值,而不改变其所有权。引用有可变(Mut)和不可变(Immutable)两种形式,遵循严格的借用规则,确保了并发访问的安全性。 ...

    握柄

    它的"握柄"(grips)可能是指Rust中的引用(References)和所有权(Ownership)机制,这是其核心特性之一。Rust通过严格的类型检查和生命周期系统来确保内存安全,程序员可以通过握柄来控制数据的访问和生命周期,...

Global site tag (gtag.js) - Google Analytics