入门篇
Rust入门系列,这个帖子会一直更新,欢迎大家回复!首先从安装来写把。
rust安装
在写这篇文章的时候,rust最新版本是1.35,安装的步骤大家可以直接上rust官网:
https://www.rust-lang.org/
curl https://sh.rustup.rs -sSf | sh
但是实际上安装会比较慢,建议大家可以看看如何更换下载源。
安装的时候其实设置两个环境变量就可以解决这个问题:
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
另外安装好之后我们将会有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
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了, 同样也就可以进行相关的操作了.