Rust 语言 IDE 简介
作者:jntrnr 译者:刘祺
我和 @nrc 致力于集成开发环境(IDE)的开发,一直非常拼命的将我们在 RustConf(2.2k)中展示的 Rust Language Server(RLS) demo 转变为实际项目。现在, 我们正在制作我们的第一个源码 pre-alpha 版本(1.8k)的项目。
我们对 RLS 项目将会对 Rust 语言的发展起到一定的作用而感到兴奋。RLS 旨在成为一个独立的,全功能的集成开发环境(IDE)支持应用程序。通过自包含以及遵循一个简明的协议,所有的核心集成开发环境(IDE)功能将可用于任何编辑器。
至少这在理论上是可行的。 为了达成这个目标我们还有很长的路要走。
我们需要开发人员,测试人员以及在各种编辑中具有专业知识的人员来帮助实现支持并确保良好的用户体验。
**RLS 还没有到绽放之时**。目前的早期版本会吃硬盘,还有出来吓唬人(frighten your neighbors)。 我们只建议您在定期备份代码的情况下使用它。
如果您仍然感兴趣,您可以通过指南入门(https://github.com/jonathandturner/rls/blob/master/README.md)。
我们需要帮助
首先,我们正在寻找想写代码并帮助我们实现它的人。由一个持续增长的提问(issues)清单(https://github.com/jonathandturner/rls/issues)和一大堆需要修复的代码需要处理。
如果您愿意尝鲜,我们很乐意收到您的体验反馈。哪些功能停止工作了? 什么是导致它们崩溃的?提出问题(issue)让我们知道(https://github.com/jonathandturner/rustls/issues/new)。
RLS 使用语言服务器协议(1.1k),一种由微软和红帽支持的 json-rpc 协议(https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md)。这是一个相对年轻的协议。 目前,Eclipse 和 Visual Studio Code 支持此协议,并且应该可以向其他编辑器添加支持。只需把它投入到工作中。
已经投入使用的功能
当前版本支持以下功能:
键入错误提示
goto def
查找所有参考
重命名
类型/docs/doc 悬停链接
标准库中的类型和文档
还没有稳定的一些功能
当然,白璧微瑕:
分析速度会有点儿慢。 初始分析的时候会尤为明显,毕竟它必须通过所有依赖关系工作。
具有自定义构建步骤或编译器插件的依赖项的项目不支持开箱即用。 要支持它们,您需要通过在 build.rs 中删除 “-Zno-trans” 命令到编译器来启用“慢,但更准确”的模式。
请在使用过程中开启警告。它可以更新您的代码时执行任务,如重命名、重构。 始终检查是否进行了您期望的修改。 如果没有,请提交问题(issues),以便我们的改进。
下一步
我们正在努力开发一个面向更广泛受众的Alpha版本。我们正在跟踪这些任务(https://github.com/jonathandturner/rustls/milestone/2),以帮助我们达成目标。
如果您有任何疑问请联系原作者(jntrnr)。转载请注明由 刘祺 提供翻译。