入门篇

Rust入门系列,这个帖子会一直更新,欢迎大家回复!首先从安装来写把。

rust安装

在写这篇文章的时候,rust最新版本是1.35,安装的步骤大家可以直接上rust官网:

https://www.rust-lang.org/

curl https://sh.rustup.rs -sSf | sh

但是实际上安装会比较慢,建议大家可以看看如何更换下载源。
另外安装好之后我们将会有cargo,这个就相当于是pip,rust的包管理工具。
使用cargo就跟使用pip一样,官网下载库的速度慢的蛋疼。怎么办?换源。

sudo vim ~/.cargo/config

然后添加:

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"

对于想入门Rust的同学来说,我们将为你们带来一个全新的Rust系列专栏,在哪里我们将从入门到探索未来操作系统级编程语言。
知乎专栏:Rust从入门到放弃CPP

假如你要升级rust,那么直接:

rustup update

假如你已经安装了cargo,安利一个很好用的rust程序:ripgrep:

cargo install ripgrep

然后你就可以使用rg命令查找任何文件内容了。

[17:33:32] jintain:rti_workspace $ rg CdrBuffer
5.3.1/examples/corba/java/corba_dds/MessageTypeSupport.java
16:import com.rti.dds.cdr.CdrBuffer;

5.3.1/examples/corba/java/corba_dds/DateTimeTypeSupport.java
16:import com.rti.dds.cdr.CdrBuffer;

5.3.1/examples/connext_dds/java/hello_world_dtls/HelloWorldTypeSupport.java
15:import com.rti.dds.cdr.CdrBuffer;

5.3.1/examples/connext_dds/java/hello_world_wan/HelloWorldTypeSupport.java
15:import com.rti.dds.cdr.CdrBuffer;

5.3.1/examples/connext_dds/java/hello_world_topic_query/HelloWorldTopicQueryTypeSupport.java

11e6bcab-1248-4f2e-9be4-16ac9e5688a3-image.png

it's very fast!

rust简单上手

上一阶段安装了rust,接下来该上手了. 这篇主要从3个方面上手:

  • 字符串处理
  • 数组处理
  • 函数处理

基本上学会这三个方面,rust你就无师自通了. 首先我们来看一下字符串, rust的字符串比较蛋疼. 比如我要拼接两个:


let a = "hello";
a += "aaa";

上面写法是不对的, rust根本不支持. 具体原因因为rust里面有一套机制, 它不允许你进行简单的+然后赋值, 因为每一个变量都是有owner的. 你吧人家加过来之后, 归谁?不好说. 正确的写法是:


fn main() {
    let mut a = "hello".to_string(); // &'static str
    println!("{}", a);

    a.push_str(" world.");
    println!("{}", a);
}

这里主要是两个不同的string的差别:

  • &str 这个是string的引用, 类似于C++里面的char*;
  • String 这个是一个类, 类似于C++里面的string, 也就有点像Rust里面的Vector
    我们的拼接操作是先 to_string 的, 这里就等于是把操作变成String来处理, 这也就能 push_str了, 同样也就可以进行相关的操作了.