# 22.8 Rust/Go 开发环境

## Rust

Rust 旨在实现内存安全和线程安全，并发编程也是 Rust 的设计目标之一。目前，Rust 在系统编程、高性能计算等领域的应用日益广泛。

### 安装 Rust

使用 pkg 安装 Rust：

```sh
# pkg install rust
```

或者使用 Ports 安装：

```sh
# cd /usr/ports/lang/rust/ 
# make install clean
```

> **技巧**
>
> 最新开发版位于 Port `lang/rust-nightly`。

安装成功后，查看软件版本：

```sh
$ rustc --version    # 显示已安装 Rust 编译器的版本信息
rustc 1.88.0-nightly (10fa3c449 2025-04-26) (built from a source tarball)
$ cargo --version    # 显示已安装 Cargo（Rust 包管理器和构建工具）的版本信息
cargo 1.88.0-nightly (d811228b1 2025-04-15) (built from a source tarball)
```

### 为美好的世界献上祝福

```sh
$ cd ~                               # 回到当前用户主目录
$ mkdir projects && cd projects       # 创建 projects 目录并进入
$ cargo new greeting                  # 使用 Cargo 创建一个名为 greeting 的新 Rust 项目
$ cd greeting                         # 进入 greeting 项目目录
```

新建或编辑 `src/main.rs` 文件，确保包含如下代码（通常新建项目时已包含）：

```rust
fn main() {                               // Rust 程序入口函数
    println!("Hello, world!");            // 输出 "Hello, world!" 到控制台
}
```

保存后，运行：

```rust
$ cargo run
   Compiling greeting v0.1.0 (/home/ykla/projects/greeting)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.58s
     Running `target/debug/greeting`
Hello, world!
```

编译并运行当前 Rust 项目。

### JetBrains Rust 开发环境

使用 pkg 安装：

```sh
# pkg install jetbrains-rustrover
```

或者使用 Ports 安装：

```sh
# cd /usr/ports/devel/jetbrains-rustrover/
# make install clean
```

![JetBrains Rust 开发环境界面示例](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-e8ff563729a42fe3db91ba1fb6ed08967bcf2647%2Frust1.png?alt=media)

### 附录：安装 `rustup`

rustup-init 用于以普通用户或非 root 用户身份安装和初始化 rustup。

rustup 是 Rust 官方的版本管理工具，可从官方渠道安装 Rust 编程语言，并能管理和切换不同版本的 Rust，从而绕过 Ports 中的 lang/rust 及 `lang/rust-nightly`。类似于其他编程语言的版本管理器，rustup 可便捷地获取和管理各种 Rust 版本。

使用 pkg 安装：

```sh
# pkg install rustup-init
```

使用 Ports 安装：

```sh
# cd /usr/ports/devel/rustup-init/ 
# make install clean
```

## Go 语言

Go 语言（Go）由谷歌公司（Google）开发，是一种原生支持并发的编程语言。

### 安装 Go

使用 pkg 安装：

```sh
# pkg install go
```

或者使用 Ports 安装：

```sh
# cd /usr/ports/lang/go/ 
# make install clean
```

安装成功后，查看已安装 Go 语言的版本信息：

```sh
$ go version
go version go1.21.13 freebsd/amd64
```

### 为美好的世界献上祝福

新建名为 `helloWorld.go` 的文本，添加如下内容：

```go
package main               // 定义主包，程序入口必须为 main 包

import "fmt"               // 引入 fmt 包用于格式化输出

func main() {              // 主函数，程序入口函数
    fmt.Println("Hello, World!")   // 输出 "Hello, World!" 到控制台
}
```

保存后，在终端执行下列命令即可输出代码：

```go
$ go run helloWorld.go    # 编译并运行 helloWorld.go 文件
Hello, World!
```

### JetBrains GoLand IDE

使用 pkg 安装 JetBrains GoLand IDE：

```sh
# pkg install jetbrains-goland
```

或者使用 Ports 安装：

```sh
# cd /usr/ports/devel/jetbrains-goland/ 
# make install clean
```

![JetBrains GoLand IDE 界面示例](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-56ba42f92670cb92c90fbe6dd2a801a007cb657e%2Fgo1.png?alt=media)

## 课后习题

1. 使用 Rust 与 Go 分别实现一个简单的并发程序，对比两者在 FreeBSD 上的编译时间与运行性能。
2. 将 Rust 引入 FreeBSD 内核驱动程序开发。
