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

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"

【Rust】使用cargo创建项目及cargo源的替换的更多相关文章

  1. Rust <0>:源代码组织,Cargo 入门

    Rust 源代码组织,使用配套的 Cargo 工具,其功能强大,程序员可摆脱 C/C++ 中需要自行维护 make.cmake 之类配置的工作量. 初始化一个项目: cargo new --bin h ...

  2. Maven自定义绑定插件目标:创建项目的源码jar

    <build> <plugins> <!-- 自定义绑定,创建项目的源码jar --> <plugin> <groupId>org.apac ...

  3. vs创建项目模板和项模板

    原文地址:https://msdn.microsoft.com/zhcn/library/xkh1wxd8(v=vs.140).aspx 如何:创建项目模板 Visual Studio 2015   ...

  4. Maven入门学习,安装及创建项目

    一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ...

  5. (转)Ratchet教程:创建项目

    原文:http://www.w3cplus.com/mobile/how-to-create-mobile-project-width-ratchet.html Ratchet教程:创建项目      ...

  6. 第二章 andrid studio创建项目

    原文 http://blog.csdn.net/zhanghefu/article/details/9326735 第二章 andrid studio创建项目 第二章 andrid studio创建项 ...

  7. node+vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发(1):创建项目,完成登录功能

    第一章 建议学习时间8小时·分两次学习      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章]) 视频教程地 ...

  8. Vuejs实例-使用vue-cli创建项目

    1,首先从官方网站下载安装Node.js,建议使用6.x版本,同时也会一并安装npm工具,npm>3.10以上. 2,npm安装很慢(国外服务器),所以一般推荐使用npm淘宝镜像cnpm,先安装 ...

  9. 【从零开始搭建自己的.NET Core Api框架】(一)创建项目并集成swagger:1.1 创建

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

随机推荐

  1. windows cmd编辑文本

    echo创建一个空的txt文件:echo.>1.txt这里>表示输出到...echo.表示输出一个空行(即换行)>命令可以扩展为>>表示的意思为附加到...例子:1.tx ...

  2. nginx 反向代理之 proxy_redirect

    proxy_redirect 该指令用来修改被代理服务器返回的响应头中的Location头域和“refresh”头域. 语法结构为: proxy_redirect redirect replaceme ...

  3. 牛顿迭代法(c++)

    编写一个用牛顿法解方程x=tanx 的程序,求最接近4.5和7.7的根 #include <iostream> #include <cmath> using namespace ...

  4. 模拟26A 题解

    A. marshland 考试时想到了网络流,然而不会建图,就死了. 正解是最大费用可行流. 比较容易想到的是将每个点拆为两个点, s连没有危险值的入点, 没有危险值的入点连有危险值的入点,入点出点之 ...

  5. BERT模型

    BERT模型是什么 BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为de ...

  6. WINDOWS 命令行调用SAS代码 并指定输出路径 示例

    ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...

  7. WD MyBook Live Duo 重装教程

    9102年了,我还在用MBL DUO 前情提要:这个设备基础配置是3T*2,但是近期两块3T硬盘需要另做他用,因此只能用2块1T的硬盘来替换了,所以就免不了要重灌WD的固件.可能是由于设备太老吧,那个 ...

  8. 用GEOquery从GEO数据库下载数据--转载

    https://www.plob.org/article/9969.html Gene Expression Omnibus database (GEO)是由NCBI负责维护的一个数据库,设计初衷是为 ...

  9. 【转载】 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0" (---------tensorflow中设置GPU可见顺序和选取)

    原文地址: https://blog.csdn.net/Jamesjjjjj/article/details/83414680 ------------------------------------ ...

  10. Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法

    转: Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法  更新时间:2018年02月14日 17:13:03   投稿:wdc   我要评论   Java开发中 ...