2.3 Hello,Cargo

原文地址http://doc.rust-lang.org/book/hello-cargo.htmlhtml

 cargo是一个rust开发者用来管理他们项目的工具。Cargo当前稳定是pre-1.0版本,而且它仍在不断地进步中。可是它如今能够用来管理大多的rust项目,因此咱们打算rust项目都用cargo工具做为开始。git

 

cargo管理三样东西:创建你的代码,下载你代码依赖的东西而且创建依赖。首先,你的程序若是不须要任何依赖,咱们将只能使用cargo的第一部分的功能。最终,若是咱们往代码加更多的东西的话而且咱们一开始就使用cargo,这将会是一件很简单的事情。程序员

 

若是你经过官方安装器安装的话,你已经拥有cargo了。若是你经过其余的方式去去安装,你可能须要一些具体的指令去确认你是否已经正确的地安装。shell

 

转换成cargo编程

 

让咱们把Hello World转换成Cargo吧。ide

 

将咱们的项目转成cargo形式,咱们只须要作两件事:建一个Cargo.toml的配置文件并把咱们的源文件放在正确的地方。咱们先来作第一件事:工具

 $ mkdir src
$ mv main.rs src/main.rs

注意,由于咱们建立了一个可执行的文件,咱们是经过使用main.rs文件。若是咱们须要创建一个库文件,咱们就应该使用lib.rs 。传统的入口文件路径按照toml定义的规范去写http://doc.crates.io/manifest.html#configuring-a-target学习

 

cargo但愿你的源文件放在src文件目录里面。这可使其余高层次的东西(如readme文档,许可信息和其余不相关的信息)远离你的代码。cargo能够帮助你保持咱们对项目清晰整理,一个包含全部东西的地方,全部的东西只会在它该出现的地方出现。优化

 

下一步,咱们的配置文件ui

 $ editor Cargo.toml

 必须确认输入的名字正确:这是基本的条件。。

 

将下面的东西输入进去:

 [package]
name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]

 这是toml的格式,下面来解析一下其内容

TOML目的是在于作一个可以清晰阅读而且能够少许配置的文件,这都源自于其简单语义。TOML被设计为一个简单哈希列表。TOML很是容易转换成其余通用语言的数据格式。

 

TOML与INI文件很是类似,但它带有其余一些额外的好处。

 

一旦把这个TOML文件创建起来,咱们就能够随时准备去编译!尝试下这个:

$ cargo build
   Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
$ ./target/debug/hello_world
Hello, world!

Bam!咱们经过cargo build编译了咱们的项目,而且运行这个路径起来(./target/debug/hello_world).咱们也能够一步到位,请使用cargo run:

 $ cargo run
     Running `target/debug/hello_world`
Hello, world!

注意到咱们这次并无从新编译项目。cargo已经提醒“大家并无修改过源文件”,因此它仅仅只是运行原来的二进制程序。若是咱们做了修改,咱们会看到下列的场景:

 $ cargo run   Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)     Running `target/debug/hello_world`Hello, world!

这个操做并无比原来咱们使用rustc简化不少操做,但你试着想一下将来的情景:当咱们的项目变得愈来愈复杂,咱们须要作更多事情仅仅为了把全部的代码编译一边。可是经过cargo,随着项目发展,咱们仅仅也只须要cargo build命令运行一边,而后它就自动帮你完成工做了。

 

当你的项目准备好发行,你可使用cargo build --release的命令去编译你的项目(带优化功能)。

 

你也注意到cargo已经帮你建立了一个新的文件:Cargo.lock。

 [root]
name = "hello_world"
version = "0.0.1"

这个文件是被cargo用做跟踪你程序的依赖的。如今咱们的程序并无多少依赖,因此这个文件显得比较稀疏。你不须要去接触这个文件,让Cargo去帮你处理就行了。

 

就这样,咱们顺利经过cargo顺利地编译hello_world程序。尽管咱们如今的程序很是简单,可是已经使用实际的工具,你可能会在未来rust编程中频繁的使用。

 

你能够期待全部的rust项目都使用cargo去开始项目的搭建:

 $ git clone someurl.com/foo
$ cd foo
$ cargo build

一个新的项目

 

你并不用每次开始一个新的项目都完整地按照上述的流程!

Cargo能够在你开始开发项目的时候创建一个基本骨架项目目录格式。

 

经过cargo去创建一个新的项目,咱们使用cargo new :

cargo new hello_world --bin

咱们输入 --bin 选项是由于咱们打算作个二进制的可执行文件:若是咱们只是作一个library,咱们能够忽略掉这个选项。

 

让咱们看一下Cargo帮咱们生成了什么:

 $ cd hello_world
$ tree .
.
├── Cargo.toml
└── src
    └── main.rs
1 directory, 2 files

若是你并无tree这个命令,你也能够经过你的发行版的包管理器去查看。虽然这不是必须的,可是它看起来很实用。

这就是咱们所用所需的内容了。首要的,咱们检查一下Cargo.toml:

 [package]
name = "hello_world"
version = "0.0.1"
authors = ["Your Name <you@example.com>"]

Cargo根据你给的参数和你git全局配置,只能地给你toml文件填充默认值。你可能注意到了Cargo同时帮你初始化hello_world目录做为git仓库。

 

接着看一下src/main.rs这个文件里面有什么:

 fn main() {    
    println!("Hello, world!");
}

Cargo已经帮咱们生成好一个“Hello World!”了,Cargo它有一个本身的文档,里面介绍了须要Cargo高级的特性。(http://doc.crates.io/guide.html

 

如今咱们把工具放下,真正地区学习Rust语言自己。那里有不少值得用你的余生去体会的。

 

你有两个选择:进入一个叫“Learn Rust”的项目学习,或者从基本的东西开始学习,经过根据本身的需求"Syntax and Semantics'里的内容。若是有这更多系统编程经验的程序员倾向于经过‘Learn Rust’学习。那些从动态语言学习可能会乐于其中。不一样的人用不一样的方式学习。用你以为对的方法去学习。

相关文章
相关标签/搜索