Rust学习

Posted liufu627

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust学习相关的知识,希望对你有一定的参考价值。

# Rust学习
## Rust安装
1. 直接访问官网 https://www.rust-lang.org/tools/install 下载相应的版本进行安装。
2. 如果是Windows版本的Rust,需要安装Visual Studio 2012以上版本的VC++ 才能编译通过
3. 在命令行窗口中运行  rustc --version     如果能正常显示版本说明已安装成功
4. 安装VS Code的RUST插件 ,在VSCode Extension中查找Rust, 选择 “Rust (rls)”并安装。
5. 在用户目录下(~.cargoin),应该有cargo-clippy.exe,cargo-fmt.exe,cargo-miri.exe,cargo.exe,clippy-driver.exe,rls.exe,rust-gdb.exe,rust-lldb.exe,rustc.exe,rustdoc.exe,rustfmt.exe,rustup.exe
6. rustdoc 帮助文档
7. rustc rust编译器
8. rustup rust 版本安装和更新器
9. cargo rust的包管理,像NODEJS的NPM
10. cargo new <packagename> --bin 新建一个RUST的应该项目
11. cargo new <packagename> --lib 新建一个RUST的链接库项目
12. rust切换nightly模式
rust stable 切换 nightly
安装:rustup install nightly
设为default: rustup default nightly
rustc --version就能看到切换到nightly版本了

13. rust切换stable模式
rustup default stable

14. cargo 换国内中科镜像(如果所处的环境中不允许使用 git 协议,可以把上述地址改为:registry = "https://mirrors.ustc.edu.cn/crates.io-index")

15. 调试rust程序
> 必须在vscode里安装 Microsoft C/C++ 插件
> 然后再设置选中 Allow setting breakpoints in any file.
> 先用cargo build,生成exe文件
> 按F5开始调试,修改launch.json例如以下内容,将program值修改为当前exe文件。 保存 launch.json
‘‘‘
{    
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/target/debug/netchat.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,            
        }
    ]
}
‘‘‘
> 然后就可以随便设置断点, 按F5调试 。

```
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = ‘ustc‘

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
```
将上述内容保存为 config ,放在~/.cargo/


## 新建一个项目用 cargo new <packagename> --bin
1. cargo new hello --bin
2. 结构为:hello
                 cargo.lock
                 cargo.toml     当前项目的配置文件
                 .gitignore
                 srcmain.rs
3. cargo.toml                 
```
[package]
name = "hello"
version = "0.1.0"
authors = ["alfred"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rocket = "0.3.6"
rocket_codegen = "0.3.6"

基于rust官方仓库crates.io,通过版本说明来描述:
基于项目源代码的git仓库地址,通过URL来描述:
基于本地项目的绝对路径或者相对路径,通过类Unix模式的路径来描述: 这三种形式具体写法如下:
[dependencies]
typemap = "0.3"
plugin = "0.2*"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }

```

4. cargo build
   输出到  hello target
              


# 包管理
1. 系统模块引用: 直接使用use ;  ex. use std::collections::HashMap;
use std::collections::HashMap;

let mut scores = HashMap::new();

scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);


2. main文件中同级模块引用:使用 mode; 
> 例如:同级目录下有一个data.rs,内有公开方法out;
  mod data;
  fn main(){
     data::out();
  }
    
3. 非main文件中引用非系统模块,不能直接使用mod, 需要使用 mod.rs 来公开模块;例如当前目录下有data.rs,mod.rs,c.rs; 要在mod.rs中添加相应的module,然后可以mod.rs和c.rs中引用。
>data.rs; 因为out是公开的,data在同级目录下应该也是公开的
pub fn out() {
    println!("hello");
}
>mod.rs
pub mod data;//公开data模块
pub mod c;
fn out(){
    data::out();
}
>c.rs
use crate::data;
fn out(){
    data::out();
}




以上是关于Rust学习的主要内容,如果未能解决你的问题,请参考以下文章

rust 学习之旅一, rust编程环境相关

Rust学习教程02 - Rust语言简介

rust语言:开始学习rust语言,使用vscode进行开发,rust不要做为自己的第一门开发语言,c++和rust都要学习好,成年人两个都要。

rust语言:rust项目有很多公司程序员已经开始在学习使用中了,都有 Rust Meetup 2022了,想往底层走的可以学习C++Rust了。

rust语言:rust项目有很多公司程序员已经开始在学习使用中了,都有 Rust Meetup 2022了,想往底层走的可以学习C++Rust了。

Rust学习