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

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. # [SDOI2019]移动金币 阶梯博弈 dp

    [SDOI移动金币 链接 vijos 思路 阶梯博弈,dp统计. 参见wxyww 代码 #include <bits/stdc++.h> using namespace std; cons ...

  2. CCF 201909-5 城市规划

    试题编号: 201909-5 试题名称: 城市规划 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 几乎是Gym102222G的原版,详解见上一篇博文 /* 贡献+树形dp+01背包 * ...

  3. 洛谷 P1396

    P1396 传送门 扯些题外话 讲真的我刚看到这个题的时候真的傻fufu的..... 大体题意 找出从s走到t的拥挤度最大值最小.. 思路 说最大值最小可能就会有dalao开始二分了. 想我这种的蒟蒻 ...

  4. Guava Cache 参数配置说明

    系统中用到了了Guava Cache: private DriverInfoServiceImpl(DriverClientProxy driverClientProxy) { this.driver ...

  5. IT项目经理都需要具备哪些能力

    发布时间:05-2009:24优质原创作者 项目经理是IT行业中比较常见的职位,工作职责主要包括三个方面,其一是资源整合任务:其二是沟通协调任务:其三是保障项目的时间周期. 资源整合能力是项目经理的重 ...

  6. 线程:Java中wait、notify、notifyAll使用详解

    基础知识 首先我们需要知道,这几个都是Object对象的方法.换言之,Java中所有的对象都有这些方法. public final native void notify(); public final ...

  7. win10教育版永久激活密钥 win10教育版激活码 win10教育版产品密钥2018(第三种方法亲测可用!)

    有没有最新win10教育版激活密钥?win10教育版功能比较全面,增加了一些学术上需要的功能.有用户装了win10教育版,提示需要产品密钥,网上找到的win10教育版永久激活码大多失效,这边小编为大家 ...

  8. 关于RSA汇总

    写在前面 安全测试需要, 后台数据需要签名, 前台验签, 于是有了这篇hao123. 正文 jsrsasign https://github.com/kjur/jsrsasign jsrsasign使 ...

  9. Anaconda(二)

    三.配置依赖包仓库 conda在安装依赖包的时候会检测已有包的版本与需要安装的版本是否匹配.以及相关包更新后的版本与现有的其他包是否会造成冲突. 添加清华镜像源(依赖包仓库),命令行中直接使用以下命令 ...

  10. Network Lock Manager Protocol (NLM)

    资料来源 https://wiki.wireshark.org/Network_Lock_Manager 目的 The purpose of the NLM protocol is to provid ...