> This page is for SDK, version Current (default).
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# Rust 配置

> Fern Rust SDK 的配置选项。

您可以在 `generators.yml` 中自定义 Rust SDK 生成器的行为：

**`generators.yml`**

```yaml {6-15} title="generators.yml"
groups:
  rust-sdk:
    generators:
      - name: fern-rust-sdk
        version: 0.53.3
        config:
          clientClassName: YourClientName
          crateName: your-crate-name
          crateVersion: "1.0.0"
          dateTimeType: "offset"
          environmentEnumName: YourEnvironment
          enableWireTests: true
```

**`clientClassName`** `string`

生成的客户端结构体的名称。这允许您自定义用户在使用您的 SDK 时将实例化的结构体名称。

---

**`crateName`** `string`

生成的 Rust crate 的名称。这在 `Cargo.toml` 中使用，并决定用户如何将您的 SDK 添加为依赖项。

---

**`crateVersion`** `string`

生成的 crate 的版本。这在 `Cargo.toml` 中使用，用于发布到 crates.io。

---

**`dateTimeType`** `'offset' | 'utc'` — default: offset

确定如何处理时区信息：

* `offset`：使用 `DateTime<FixedOffset>` 来保留 API 响应中的原始时区
* `utc`：使用 `DateTime<Utc>` 将所有日期时间标准化为 UTC，无论其原始时区如何

两个选项都接受任何日期时间格式，如果日期时间字符串中没有提供时区，则假定为 UTC。

---

**`environmentEnumName`** `string`

生成的环境枚举的名称。这允许您自定义定义 API 环境（如生产、预发布、开发）的枚举名称。

---

**`enableWebsockets`** `boolean` — default: false

启用时，为具有 WebSocket 通道的 API 生成 WebSocket 客户端代码。WebSocket 通道可通过根客户端的连接器结构体访问（例如 `client.realtime.connect(...)`）。

---

**`enableWireTests`** `boolean` — default: false

启用时，生成[模拟服务器（wire）测试](/learn/zh/sdks/deep-dives/testing#mock-server-tests)来验证 SDK 是否发送正确的 HTTP 请求并按照 API 规范正确处理响应。

---

**`generateExamples`** `boolean` — default: true

启用时，在 README 和参考文档中生成代码示例。

---

### 包元数据

配置发布到 crates.io 的元数据：

**`generators.yml`**

```yaml title="generators.yml"
config:
  packageDescription: "SDK for the Plant Store API"
  packageLicense: "MIT"
  packageRepository: "https://github.com/your-org/your-sdk"
  packageDocumentation: "https://docs.example.com"
```

**`packageDescription`** `string`

crates.io 上 crate 的描述。这会出现在 crate 的元数据和搜索结果中。

---

**`packageLicense`** `string`

crate 的许可证标识符（例如 "MIT"、"Apache-2.0"）。

---

**`packageLicenseFile`** `string`

自定义许可证文件的路径（例如 `LICENSE.md`）。设置时，在 `Cargo.toml` 中使用 `license-file` 而不是 `license`。当您的许可证不是标准的软件包数据交换（SPDX）标识符时，这很有用。

---

**`packageRepository`** `string`

crate 源代码仓库的 URL。

---

**`packageDocumentation`** `string`

crate 文档的 URL。

---

### 依赖项

为生成的 SDK 添加自定义依赖项：

**`generators.yml`**

```yaml title="generators.yml"
config:
  extraDependencies:
    tokio: "1.0"
    serde_json: "1.0"
  extraDevDependencies:
    mockall: "0.11"
```

**`extraDependencies`** `object`

要包含在生成的 `Cargo.toml` 中的额外依赖项。指定为 crate 名称到版本要求的映射。您还可以指定具有功能和默认功能的完整依赖项规范：

**`generators.yml`**

```yaml title="generators.yml"
config:
  extraDependencies:
    reqwest:
      version: "0.12"
      defaultFeatures: true
```

**`generators.yml`**

```yaml title="generators.yml"
config:
  extraDependencies:
    reqwest:
      version: "0.12"
      features: ["rustls-tls"]
```

---

**`extraDevDependencies`** `object`

要包含在生成的 `Cargo.toml` 中的额外开发依赖项。这些仅在开发和测试期间使用。

---