rust-cargo说明

原创 超级英雄     发表于  2021-07-27 14:47       194

cargo

cargo build 可以构建项目
cargo run 可以运行项目
cargo test 可以测试项目
cargo doc可以为项目构建文档
cargo publish 可以将库发布到 crates.io

rust的特色

  1. 可变性
    let mut count = 0;
    let res = loop {
        println!("count{}", count);
        count += 1;

        if count == 10 {
            break count * 2;
        }
    };

    println!("{}", res)
  1. rust不需要gc也能保证内存安全,这个能力叫做所有权(Ownership)
  • rust的每个变量都有一个所有者变量
  • 一次只能有一个所有者
  • 当所有者离开作用域时,变量会被抛弃
let x = String::from("hello");
let y = x;
//这里rust会提示你无效引用,此时的hello已经被移动(move)到 y
printl!("{}",x);
  • 简单来说clone 和 copy并没有什么区别。clone是一次深拷贝,它会在堆上克隆一份数据。copy通常来说都是在编译时就已知大小的类型(i32、bool、f64、char、tulp),他们都是在栈上的复制,速度很快,所以使用的是copy而非move。如果已经实现了drop的话,就不允许实现copy
  1. 引用规则
  • 简而言之的引用规则就是1.你要么拥有多个不可变引用,要么拥有一个可变引用 2.引用必须永久有效
  • 借用就是*xx。&xx就是解引用。类似于指针,但是不可修改。如果想要修改的话使用 mut &a ,同时使用可变引用时,同时只能有一个操作操作可变引用