# rust-lang/rls

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rust-lang-rls).**

3,509 stars · 252 forks · Rust · other · archived

## Links

- GitHub: https://github.com/rust-lang/rls
- awesome-repositories: https://awesome-repositories.com/repository/rust-lang-rls.md

## Topics

`ide` `language-server-protocol` `rust`

## Description

RLS is a language server that provides language intelligence for the Rust programming language. It implements the Language Server Protocol to enable a standardized communication layer between the Rust compiler and various editor clients.

The project focuses on providing real-time code completions, symbol navigation, and type information. It also supports automated structural changes, such as workspace-wide symbol renaming, to maintain semantic correctness during refactoring.

The system incorporates static code analysis for linting and formatting, alongside a mechanism for incremental compilation to keep analysis data current without full project recompilations. It uses a virtual file system to track in-memory changes for real-time analysis.

## Tags

### Development Tools & Productivity

- [Language Server Protocol Implementations](https://awesome-repositories.com/f/development-tools-productivity/language-server-protocol-implementations.md) — Implements the Language Server Protocol to enable a standardized communication layer between the Rust compiler and editors.
- [Language Server Protocols](https://awesome-repositories.com/f/development-tools-productivity/language-server-protocols.md) — Implements the Language Server Protocol to deliver completions, definition lookups, and symbol searching to editors. ([source](https://github.com/rust-lang/rls/blob/master/clients.md))
- [Language Intelligence Services](https://awesome-repositories.com/f/development-tools-productivity/ai-coding-assistants/intelligent-development-assistants/rust-productivity-assistants/language-intelligence-services.md) — Provides real-time code completions, symbol navigation, and type information for Rust development.
- [Code Completion](https://awesome-repositories.com/f/development-tools-productivity/code-completion.md) — Suggests relevant code completions and displays type information via hover tooltips during development. ([source](https://github.com/rust-lang/rls/blob/master/README.md))
- [Code Intelligence](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-intelligence.md) — Provides comprehensive code intelligence including symbols, definitions, and completion data via compiler indexing. ([source](https://github.com/rust-lang/rls#readme))
- [Dependency Graph Resolvers](https://awesome-repositories.com/f/development-tools-productivity/dependency-graph-resolvers.md) — Builds a searchable database of project symbols by traversing relationships between source files and external crates.
- [Symbol Indexing](https://awesome-repositories.com/f/development-tools-productivity/symbol-indexing.md) — Generates maps of function definitions and call sites to facilitate fast code navigation and symbol searches. ([source](https://github.com/rust-lang/rls/blob/master/architecture.md))
- [Symbol Navigation](https://awesome-repositories.com/f/development-tools-productivity/symbol-navigation.md) — Enables jumping from symbol usages to their declarations and navigating related code sections. ([source](https://github.com/rust-lang/rls/blob/master/clients.md))
- [Automated Code Refactoring](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-analysis-and-transformation/automated-code-refactoring.md) — Provides automated structural changes and symbol renaming to maintain semantic correctness during refactoring. ([source](https://github.com/rust-lang/rls#readme))
- [Code Formatting Tools](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-formatting-tools.md) — Automatically applies consistent visual styling and formatting rules to the Rust codebase. ([source](https://github.com/rust-lang/rls/blob/master/rustfmt.toml))
- [Code Refactoring Tools](https://awesome-repositories.com/f/development-tools-productivity/code-refactoring-tools.md) — Automates structural changes such as workspace-wide symbol renaming to maintain semantic correctness. ([source](https://github.com/rust-lang/rls/blob/master/README.md))
- [Compiler Driver Emulation](https://awesome-repositories.com/f/development-tools-productivity/compiled-code-analysis/compiler-driver-emulation.md) — Runs analysis tools on stable toolchains by emulating the compiler driver and overriding internal properties. ([source](https://github.com/rust-lang/rls/tree/master/rls-rustc))
- [Incremental Build Engines](https://awesome-repositories.com/f/development-tools-productivity/incremental-build-engines.md) — Schedules recompilation of only modified project parts based on file changes to keep intelligence current. ([source](https://github.com/rust-lang/rls/blob/master/architecture.md))
- [Incremental Build Systems](https://awesome-repositories.com/f/development-tools-productivity/incremental-build-systems.md) — Triggers partial recompilations of modified modules to update analysis state while minimizing resource overhead.
- [Static Code Linting](https://awesome-repositories.com/f/development-tools-productivity/static-code-linting.md) — Scans Rust source code for common mistakes and style violations to provide corrective suggestions. ([source](https://github.com/rust-lang/rls/blob/master/architecture.md))
- [Hover Information Displays](https://awesome-repositories.com/f/development-tools-productivity/symbol-navigation/hover-information-displays.md) — Retrieves and displays detailed type signatures and documentation when hovering over symbols. ([source](https://github.com/rust-lang/rls/blob/master/clients.md))

### Programming Languages & Runtimes

- [Compiler Analysis Pipelines](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-analysis-pipelines.md) — Processes compiler-generated data to power essential editor features like finding references and jumping to definitions. ([source](https://github.com/rust-lang/rls/tree/master/rls-analysis))
- [Compiler Toolchain Integrations](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-toolchain-integrations.md) — Implements deep integration with Rust compiler internals to extract semantic data for language intelligence.
- [Compiler-Integrated Analysis](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/type-systems/type-checking-disciplines/statically-typed-languages/compiler-integrated-analysis.md) — Hooks into compiler services to resolve symbols and type relationships, then serializes them for the client. ([source](https://github.com/rust-lang/rls/tree/master/rls-data))
- [Incremental Compilation Scheduling](https://awesome-repositories.com/f/programming-languages-runtimes/rust-based-compilers/compiler-caching-for-rust/incremental-compilation-scheduling.md) — Manages background builds and analyzes modified source files to keep IDE intelligence updated without full recompilations.

### User Interface & Experience

- [Code Autocomplete Engines](https://awesome-repositories.com/f/user-interface-experience/autocomplete-suggestion-engines/code-autocomplete-engines.md) — Provides context-aware code completions for symbols and expressions leveraging language semantics. ([source](https://github.com/rust-lang/rls/blob/master/architecture.md))

### Part of an Awesome List

- [Source Code Formatters](https://awesome-repositories.com/f/awesome-lists/devtools/code-analysis-and-formatting/source-code-formatters.md) — Analyzes the current document and replaces text with a consistent, standardized layout for the entire file or specific ranges. ([source](https://github.com/rust-lang/rls#readme))

### Data & Databases

- [Virtual File Systems](https://awesome-repositories.com/f/data-databases/virtual-file-systems.md) — Uses a virtual file system to track unsaved text changes in memory for real-time analysis.

### Software Engineering & Architecture

- [In-Memory Code Analysis](https://awesome-repositories.com/f/software-engineering-architecture/in-memory-code-analysis.md) — Performs static analysis on unsaved text buffers in memory without requiring disk writes. ([source](https://github.com/rust-lang/rls/blob/master/architecture.md))

### Testing & Quality Assurance

- [Static Code Analysis](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis.md) — Scans source code for style violations and common mistakes to provide corrective suggestions.
