zoukankan      html  css  js  c++  java
  • 【Rust】使用cargo创建项目及cargo源的替换

    ---------------------------------参考文档-------------------------------

    https://rustlang-cn.org/office/rust/book/getting-started/ch01-03-hello-cargo.html

    https://doc.rust-lang.org/cargo/reference/source-replacement.html

    https://www.jianshu.com/p/71fb28974cf6

    --------------------------------------------------------------------------

    cargo介绍

    cargo是rust的程序构建和包管理工具,通过在cargo中声明依赖库,可以下载并编译依赖库,同时cargo也可以用于整个项目的生命周期:创建、编译、发布。

    cargo在安装rust的时候就已经完成了安装,所以不需要单独安装。

    以下将以掷色子游戏为例,来练习使用cargo;掷色子游戏要求输入n,掷出n个色子。

    使用cargo创建项目

    cargo new playing_dice

    cargo就会为我们创建目录结构:一个Cargo.toml文件和src文件夹下的main文件

    Cargo.toml中主要是声明当前程序版本信息及依赖库,这里可以查看Cargo.toml的内容,并适当修改。

    在main.rs中写入自定义的代码

    //引入标准io库
    use std::io;
    
    fn main() {
        println!("请输入次数:");
        let mut count=String::new();//定义可变变量 count,let表示定义变量,mut表示该变量时可变的
        io::stdin().read_line(&mut count).expect("输入错误!");//读取输入,将其保存到变量count中
        println!("你输入的次数为:{}",count);//使用占位符打印
    
    }

    这里我们使用了io库,io库来自于标准库 std,通过use 关键字将io库引入到当前作用域。
    let关键字表示定义了一个变量,在rust中默认变量是不可变变量,关键字mut表示 该变量是可变的。

    使用cargo check检查代码是否有语法错误。

    cargo check

    如果代码检查通过,执行cargo run执行即可运行程序

    下面引入依赖库rand来生成随机数,rand是一个库crate,包含能被其他程序使用的代码。

    打开Cargo.toml,在dependencies中维护上引用rand库的信息

    引用库信息可以访问https://crates.io查找,这里我们查询rand,使用0.7.0的版本。

    修改main.rs,增加生成随机数的逻辑

    //引入外部库
    use std::io;
    use rand::Rng;
    
    fn main() {
                println!("请输入次数:");
                let mut count=String::new();
                let mut i=0;
                io::stdin().read_line(&mut count).expect("输入错误!");
                println!("你输入的次数为:{}",count);
                let int_count = count.trim().parse().expect("请输入数字!");
    
                while i<int_count {
                    let  rand_number=rand::thread_rng().gen_range(1,6);
                    println!("{}",rand_number);
                    i=i+1;}
    }
     

    再次运行cargo check检查是否有语法错误,因为我们引用了rand 的crates,所以cargo会下载rand的库文件及依赖库并编译(图是后续补的,所以显示是0.6.5版本,正常应该显示的是0.7.0)

    检查通过,运行cargo run 查看效果。

    更换cargo的源

    程序中引用crates,编译时需要从官方仓库中下载crates文件,但是使用官方的源有的时候很慢并且不稳定,所以使用时需要替换为国内镜像地址,目前常用的是中科大的源。

    步骤:修改$HOME/.cargo/config文件内容,如果没有这个文件的话直接手工创建。

    贴上如下内容

    [source.crates-io]
    replace-with = 'ustc'
    
    [source.ustc]
    registry = "git://mirrors.ustc.edu.cn/crates.io-index"
  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/sunlingC/p/11128147.html
Copyright © 2011-2022 走看看