Rust初体验

前段时间,无意中看到了有关Rust的一系列新闻,比如Fuchsia底层开发使用Rust,Linux驱动可以采用Rust进行开发,Rust的代码安全性比C/C++更高,而性能与C/C++更加接近,等等。而且Rust在编程语言中的排名上升速度还是值得肯定的,对嵌入式开发非常友好,所以最近也学习了解了一下Rust,有机会再尝试使用。

目前学习Rust的感觉,语法还不算太过生僻,可能是之前经历过Swift,Kotlin,Dart,Golang等语言的历练,Rust顶多也就是这一系列语言类似的一种语言。所以语法的学习感觉没有网上讨论的那么困难,可能还需要以后多加使用,总结更多的使用经验再作说明吧。

Rust编译器非常强大,能够让我们在编译阶段发现尽可能多的代码问题,所以,突破Rust编译器防线,读懂编译器报错信息,修正问题,是我们使用Rust需要锻炼的技能。网上常能看到一句话,Rust的编译让你想撞墙,此言不虚。一段编译不过去的代码,你想看到演示效果,那绝对是不可能的。但是经过C/C++编程历练的,应该不会把这个当做问题,应该反而觉得心中踏实不少。

Rust安装很简单,去官网看就可以了,有针对不同平台的安装方法说明,安装结束,基本的Rust的工具集就都安装好了。最常用的是cargo,这是我们创建,运行,编译项目,管理项目依赖的主要工具。

IDE的话,一开始用了个IDEA的Rust插件,感觉不太好用,无代码提示(或者是我没有开启),有时候删除用退格键没有办法删除,我感觉像是bug,所以暂时没有再去研究了,最后还是选择了VS Code安装Rust插件的方式。

学习的书籍官网有免费的全英文版的《The Rust Programming Language》,今年六月份基于这个英文版翻译出版了一本《Rust权威指南》可以作为最基础的学习教程吧。

安装好相应的工具以后,我们运行一个hello_world项目吧,我是在Ubuntu系统下,Windows下PowerShell类似,首先,进入你放置Rust项目的目录,在目录下用命令行运行

$ cargo new hello_world
     Created binary (application) `hello_world` package

这样hello_world项目就创建好了。

我们进到hello_world目录下,可以看到有一些文件和目录

$ ls
Cargo.toml  src

Cargo.toml文件是我们cargo管理项目的文件,里面有我们项目的配置和依赖配置,类似于go module的go.mod和maven中的pom.xml文件。

src是源码目录,现在进入src目录,我们会看到一个文件main.rs,打开看看,你就会发现,该文件中已经有一个hello_world的main函数

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

现在我们来运行一下,在hello_world目录下,执行

$ cargo run 
   Compiling hello_world v0.1.0 (/${YOUR_RUST_PROJECTS_DIR}/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 0.21s
     Running `target/debug/hello_world`
Hello, world!

现在再来看一下我们的项目目录

$ ls
Cargo.lock  Cargo.toml  src  target

多出了一个Cargo.lock文件和一个target目录,Cargo.lock文件是自动生成的,我们不需要编辑,这个文件保留我们目前项目的配置。target下现在有一个debug目录,里面存放着我们编译出的文件,包括我们的可执行文件hello_world。

如果我们要编译和运行release版本的可执行程序,该怎么办呢?只需要加上–release选项:

$ cargo run --release
   Compiling hello_world v0.1.0 (/${YOUR_RUST_PROJECTS_DIR}/hello_world)
    Finished release [optimized] target(s) in 0.20s
     Running `target/release/hello_world`
Hello, world!

单纯编译程序

$ cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s

编译release程序同样加上–release即可

$ cargo build --release
    Finished release [optimized] target(s) in 0.02s

由于通过编译检查问题的速度可能会慢一些,可以使用cargo check来进行语法检查,而不执行编译,对于大型项目,我们可以采用这个方法

$ cargo check
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s

如果我们添加了依赖,只需要重新执行cargo build就会自动下载对应的依赖,对于国内,可以配置国内镜像源,网上有很多文章配置一下就可以了。

整体来看,Rust开发工具和依赖管理还是比较好用的,而且这几年开源项目正在逐步多起来,不过感觉实际项目使用尚需要一段时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值