登录
Prettier - Code formatter (Rust)
分类:工具软件 访问:2 下载量:0

软件介绍

更新时间:2025-06-17

新的介绍内容:

Prettier Rust

Prettier Rust:高效代码格式化工具,提升开发体验

Prettier Rust是Prettier代码格式化工具的扩展版本,专门为Rust语言开发者设计。它承袭了Prettier的一贯优势,提供一致、美观的代码格式,同时支持Rust特有的特性,如夜间功能和宏。

为什么选择Prettier Rust?

使用Prettier Rust后,开发者们意识到他们在代码格式化上所花费的时间和精力是多么宝贵。无论您正在处理的代码有多不完整或有错误,使用Prettier编辑器扩展,只需按下格式化文档的快捷键,代码就会立即变得整齐有序。

  • 美观、统一、一致 — Prettier Rust具有强烈的风格偏好,无需手动调整格式选项。
  • 关键时刻的助手 — 即使代码无法编译(例如缺少注释),Prettier Rust也能进行格式化。
  • 提高日常工作效率 — 自动修复常见的语法错误(例如缺少分号、代码块、括号等)。

代码格式化示例:

输入 格式化后
``` const LEET = 1337 /// My WIP code draft #![feature(crate_visibility_modifier)] async crate fn foo(arg) { arg.0 *= 3.14 LEET & 1337 arg.1(|b, c| -> T &c).await } ``` ``` const LEET = 1337; #![feature(crate_visibility_modifier)] /// My WIP code draft crate async fn foo(arg) { arg.0 *= (3.14 LEET) & 1337; (arg.1)(|b, c| -> T { &c }).await } ```

格式化成功并修复了7个语法错误。

配置Prettier Rust:

访问Prettier官方配置文档以了解更多配置选项。

// .prettierrc.json
{
  "useTabs": false,
  "tabWidth": 4,
  "printWidth": 100,
  "endOfLine": "lf",

// -- 目前不支持 -- // "trailingComma": "es5", // "embeddedLanguageFormatting": "auto",

// 示例覆盖 "overrides": { "files": ["tests/*.rs"], "options": { "printWidth": 80 } } }

使用TOML的替代配置

# .prettierrc.toml

useTabs = false tabWidth = 4 printWidth = 100 endOfLine = "lf"

-- 目前不支持 --

trailingComma = "es5"

embeddedLanguageFormatting = "auto"

示例覆盖

overrides = [ { files = ["tests/*.rs"], options = { printWidth = 80 } } ]

</details>

**如何忽略某些内容:**

- 在代码上方添加`// prettier-ignore`或`#\[rustfmt::skip\]`
- 在代码块或文件内添加`#!\[rustfmt::skip\]`
- 创建`.prettierignore`文件来匹配忽略的文件,类似`.gitignore`

**宏的格式化规则:**

- 花括号`!{}`格式化为代码块,`!\[\]`和`!()`格式化为逗号分隔的表达式
- 宏调用内部的格式化更加保守,因为宏可能对令牌敏感
- 流行的内置宏具有原始语法规则的定制格式化(例如`matches!`, `if_chains!`...)*\[目前尚未实现\]*
- 宏声明仅部分格式化(转换部分尚未格式化,但未来可能会实现)
- 无法格式化的宏会被静默忽略

**是否支持夜间功能?**

是的!Prettier Rust格式化大多数夜间功能。支持取决于jinx-rust。

**项目集成:**

- **命令行**

    *需要NodeJS*

    - 全局安装prettier和prettier-plugin-rust
    npm install --global prettier-plugin-rust prettier
  • 使用prettier CLI格式化Rust文件。例如,运行:

    
      prettier --write **/*.rs
      ```
    • NodeJS包

      需要NodeJS

      • 在项目中安装prettier和prettier-plugin-rust

          npm install --save-dev prettier-plugin-rust prettier
      • 在prettier配置中链接到插件的位置:

          "plugins": ["./node_modules/prettier-plugin-rust"]
      • 使用prettier CLI格式化Rust文件。例如,运行:

          npx prettier --write **/*.rs
    • Rust crate

      目前没有crate。可使用上述选项。

    常见问题解答:

    • 为什么我要使用Prettier Rust而不是已有的cargo fmt?

      编辑器集成至关重要 — 在工作过程中格式化代码的能力真正提升了开发体验,而Rust严格的语法自动完成则极大地节省了时间。一旦你尝试了这个扩展,就再也回不去了。

      总的来说,代码风格的差异很小,因此采用Prettier Rust不会显著改变你的代码库。真正的缺点是与Rust生态系统的整合较为严苛,但这会随着时间的推移得到改善。

      逐点分析:

      • 扩展在编辑器中简化了你的工作
        • 可以格式化无法编译的代码(例如缺少类型注释的代码)
        • 自动更正语法错误(例如缺少分号、代码块、括号等)
      • 它具有强烈的风格偏好,无需格式选项,因此代码在项目间保持统一
      • 在某些情况下,它生成的代码更易读(例如条件链、复合表达式、模式)
      • 它支持一切功能(例如夜间功能、宏)
      • 它始终以相同的方式打印代码,而Rustfmt在某些地方保留了任意的风格
      • 它可以用于其他语言(例如markdown、html、typescript、java、python、ruby)
      • 它格式化语言嵌入。Rust代码块可以在非Rust文件中(例如markdown),以及在Rust文档注释中支持的语言。[注意:后者尚未实现]
    • 为什么不直接将这些功能添加到rustfmt中?

      不幸的是,rustfmt无法通过设计实现这些功能。

      rustfmt使用rustc解析代码。rustc严格且不宽容,因为它总是假设代码处于“最终版本”,因此任何与接受语法稍有偏差都会使解析器崩溃。此外,rustc在解析器中有许多类似lint的检查。意图是为后续的编译器工作节省时间,不幸的是,这也意味着rustc有时无法解析语法正确的代码。

      然而,Prettier Rust基于jinx-rust。jinx-rust专为Rust工具设计。因此,它设计为能容忍广泛的语法错误,支持缺失的节点,有时甚至能推断用户意图(例如Javascript的!==

      jinx-rust在其readme中有一个关于Rust工具不应使用官方rustc解析器的小型plaidoyer

    • Prettier Rust何时会更改代码语法?

      Prettier Rust的语法自动更正功能旨在适应Prettier Typescript如何自动更正缺少分号的javascript代码。

      您可以将Prettier Rust的语法自动更正视为自动应用Rust编译器建议的语法修复(例如“此处缺少分号”、“在此处加括号”或“在此处添加代码块”)。

      否则,如果您的代码库可以编译,那么Prettier Rust只是一个格式化工具,不会更改有效Rust代码的语法。此外,它不会重新组织导入、拆分注释或合并属性。

    • 这是一个“有意见的格式化工具”。但它是全新的!这些意见的可靠性如何?

      请放心,Prettier Rust实际上并不自行决定风格。Prettier Rust基本上是Prettier Typescript的1:1改编,因此它实施的意见已被数百万用户实战测试并达成共识。

本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!

本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!

如有侵权请联系我们删除下架,联系方式:study_golang@163.com

最新教程

查看更多
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......