Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目

构建我们的第一个应用

  • 搭建开发环境
    • Linux or Mac
    • Windows
    • 更新跟卸载
  • 第一个rust应用
  • cargo 构建发布rust项目
    • 使用cargo 构建项目
      • Cargo.toml解析
      • 工程源文件目录 src
      • 编译和运行cargo项目
      • 总结

搭建开发环境

Linux or Mac

打开终端,运行以下命令

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

这个命令会下载脚本然后进行rustup 工具最新版本的安装,安装成功后会提示

Rust is installed now. Great!

一些常用的rust包会依赖c 编译器,因此需要确认环境是否已有c 编译器。

Windows

请访问rust官网并按照说明安装Rust。window搭建环境还需要virtual studio的编译工具包。
下载rustinit 安装进程后进行安装即可
Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目_第1张图片
同样成功后,提示

Rust is installed now. Great!

更新跟卸载

使用rustup指令

rustup update

相信应该不会使用卸载的

rustup self uninstall

确认当前的rust版本

rustc --version

我当前使用的版本:
在这里插入图片描述
如果看到此信息,说明已经成功安装Rust !
如果在Windows上没有看到此信息,请检查Rust是否在%PATH%系统变量中。

第一个rust应用

我的开发环境是centos 7
首先创建我们的源代码文件 main.rs,编写以下代码

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

rust是一门编译型语言,所以我们需要使用rustc将源代码编译成可执行文件.

$ rustc main.rs
$ ./main
Hello, world!

掌握其他编译型语言的同学应该知道,当我们的执行程序加载到内存中执行时,需要告知操作系统程序的执行入口,所以约定俗成的采用了main 函数名。

函数的语法格式声明如下:

fn main() {
	
}
  • fn为rust的关键字,用来标识函数语法。 main函数不需要参数,同时没有任何返回值。如果我们的函数需要接收参数时,参数写在()内,而函数体是用{}包裹。使用其他语言时,我都习惯将 { 与函数方在同一行,}则换行表示,中间即放逻辑。
  • 在rust的发行版中 包含了 rustfmt 库,我们可以用来格式化我们的代码,让其符合rust的规范。
    println!("Hello, world!");

我们的main函数使用了 rust宏 println! 来打印hello world !的字符串。

  • 我们的函数体是 4个空格缩进,而不是tab
  • 字符串 hello,world! 为println! 宏的参数,!表示println是宏,后面内容再讲到如何定义宏
  • 语句采用**;**标识表达式的结束,下一个表达式的开始

至此,我们的第一个应用程序从编写->编译->执行,基本完成啦!

最后也衍生扩展下rust的函数语法格式跟其他语言的差异:
c++

//int 表示返回类型 + 函数名 + (参数列表) + {函数体}
int main(int argc, char* argv[]) {
	return 0;
}

java
java的函数语法格式跟c++类似:
返回类型 函数名 (参数列表) {
函数体
}

public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}

go
语法格式:
func 函数名 (参数列表) (返回值列表){
函数体
}

package main    // 声明 main 包

import (
    "fmt"       // 导入 fmt 包,打印字符串是需要用到
)

func main() {   // 声明 main 主函数
    fmt.Println("Hello World!") // 打印 Hello World!
}


cargo 构建发布rust项目

很多时候,我们的生产需求不是输出一句hello world这么简单,更多的业务需求跟软件工程需要我们构建出一个项目,可能会依赖其他开发者开发好或者我们自己构建的包,那么可以使用rust的工具cargo来实现包管理,cargo在我们安装rust的时候便自带了,可以通过以下指令查看当前版本:

cargo --version

在这里插入图片描述

使用cargo 构建项目

使用以下命令构建我们的hello_cargo工程

$ cargo new hello_cargo
$ cd hello_cargo

在这里插入图片描述
创建后,在我们的hello_cargo工程里包含如下的目录结构:
Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目_第2张图片

Cargo.toml解析

其内容采用toml(Tom’s Obvious, Minimal Language)格式,创造内容被大家所使用多么牛逼呀,相信大家都有一个当造物者的梦想,能创造说明我们真正理解了原理,所以造轮子就尽情地去造吧,重复了又怎样,自己造的轮子才是自己的。

[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Your Name "]
edition = "2018"

[dependencies]

  • [package]标识package段,以下内容表示package的配置
  • name、version、authors、edition是配置信息
  • [dependencies]标识依赖段,可以在其以下添加包名,在往后的教程内会引用其他包时,我们再往里面填内容

工程源文件目录 src

打开src/main.rs

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

src只存放我们的源代码,而顶层目录只放置配置,或者readme、license等其他文件

编译和运行cargo项目

在我们的顶层目录执行一下指令

cargo build

Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目_第3张图片
编译成功后,会生成Cargo.lock文件即target目录
Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目_第4张图片
执行二进制文件hello_cargo
./target/debug/hello_cargo 或者 cargo run 指令
在这里插入图片描述
当然了,我们真正要发布的是release版本,而不是debug版本,那么可以使用以下命令构建:
release 表示构建参数

cargo build --release

总结

  • 使用 cargo build 构建一个项目。
  • 可以使用cargo run一步构建和运行一个项目。
  • 编程过程中可以使用cargo check检查是否存在编译错误,而等待真正发布程序时再build构建二进制程序。
  • Cargo没有将构建结果保存在与代码相同的目录中,而是将其存储在目标/debug目录中。

你可能感兴趣的:(Rust,每周入门实践,rust,入门)