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"
  • 相关阅读:
    kmp 算法
    jdk 和 cglib 的动态代理
    RestTemplate工具类
    bat脚本切换多个工程的分支
    字符串的左旋转
    输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。
    枚举类型在JPA中的使用
    拾遗
    YAML DEMO
    kiali 1.26 anonymous策略修改为token
  • 原文地址:https://www.cnblogs.com/sunlingC/p/11128147.html
Copyright © 2011-2022 走看看