vscode开发rust初体验

  |   0 评论   |   0 浏览

背景

Rust 是 Mozilla 基金会的一个雄心勃勃的项目,号称是 C 语言和 C++ 的继任者。一直以来,C/C++ 中的一些基本问题都没能得到解决,比如分段错误、手动内存管理、内存泄漏风险和不可预测的编译器行为。Rust 的诞生就是为了解决这些问题,并提高安全性和性能。

Rust 支持主要的编程范式:面向对象编程、并发编程、函数式编程和过程编程。它提供了足够的内存管理能力,同时又足够安全,让它成为操作系统和关键应用程序的开发工具。它的主要缺点是硬件厂商对它支持不够,厂商更喜欢使用 C/C++。

rust下的hello world.

命令行初体验

安装

由于visual studio build tools太大了,需要3G+的空间。于是这里选择了msys2编译工具链。

安装msys2

https://www.msys2.org/ 下载 msys2-x86_64-20210419

一路next进行安装。

更新基础软件包

pacman -Syu

更新其它软件包

pacman -Su

安装gcc工具链

pacman -S msys/gcc

需要320MB.

安装git

pacman -S git

安装vs c++环境(跳过)

https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

下载运行 vs_buildtools__833716753.1620231056

判断安装成功

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.9.4
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools>

下载RUSTUP-INIT.EXE

运行 rustup-init

选择yes

选择 2,改为

x86_64-pc-windows-gnu

再选择 1) Proceed with installation (default)

判断安装成功

λ rustc -V
rustc 1.52.0 (88f19c6da 2021-05-03)

λ cargo -V
cargo 1.52.0 (69767412a 2021-04-21)

其中rustc是rust编译器,cargo是rust的构建系统和包管理器。

编写hello world

新建helloworld.rs

内容如下:

fn main() {

    println!("Hello, world!");

}

编译

λ rustc.exe helloworld.rs

λ ls
helloworld.exe*  helloworld.rs

λ .\helloworld.exe
Hello, world!

使用cargo编译

新建文件 Cargo.toml,内容如下:

[package]
name="helloworld"
version="1.0.0"

新建文件 src\main.rs,这个文件为cargo寻找的入口文件,内容如下:

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

打包

cargo build

运行

.\target\debug\helloworld.exe
Hello, world!

配置cargo源地址

创建文件:~/.cargo/config,内容如下:

[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"
# 如果所处的环境中不允许使用 git 协议,可以把上面的地址改为
# registry = "https://mirrors.ustc.edu.cn/crates.io-index"

如果遇到提示Blocking waiting for file lock on package cache,则删除文件

~/.cargo/.package-cache

VSCODE初体验

安装插件

Rustrust-lang.rust预览版

运行

目前只找到比较原始的方法,即新建一个终端,然后运行cargo build

httpget示例

代码 `src/main.rs',内容如下:

extern crate reqwest;

use std::collections::HashMap;

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

fn run() -> Result<(), Box<dyn std::error::Error>> {
     let resp =
          reqwest::blocking::get("https://httpbin.org/ip")?.json::<HashMap<String, String>>()?;
     println!("{:#?}", resp);
     Ok(())
}

Cargo.toml如下:

[package]
name="helloworld"
version="1.0.0"

[dependencies]
reqwest = { version = "0.10", features = ["blocking", "json"] }
tokio = { version = "0.2", features = ["full"] }

结果

λ target\debug\helloworld.exe
Hello, world!
{
    "origin": "111.202.xx.xx",
}

参考