RLS был устаревшим и больше не поддерживается. Его заменил rust-analyzer. Пользователям рекомендуется удалить RLS и следовать инструкциям в руководстве rust-analyzer для установки его в вашем редакторе.
RLS предоставляет сервер, который работает в фоновом режиме, предоставляя IDE, редакторы и другие инструменты с информацией о программах на Rust. Он поддерживает функциональность, такую как 'перейти к определению', поиск символов, форматирование и автозавершение кода, а также позволяет переименовывать и рефакторить код.
Высокий уровень обзора архитектуры можно найти здесь.
RLS получает исходные данные из компилятора и Racer. Где это возможно, он использует данные из компилятора, которые точны и полны. Где это невозможно (например, для автозавершения кода и когда сборка слишком медленная), он использует Racer.
Так как Rust-компилятор ещё не поддерживает полную инкрементальную компиляцию, мы не можем предложить идеальный опыт. Однако, оптимизируя использование компилятора и падая обратно на Racer, мы можем предложить довольно хороший опыт для небольших и средних crates. По мере эволюции RLS и компилятора, мы будем предлагать лучший опыт для всё больших и больших crates.RLS спроектирован так, чтобы быть независимым от фронтенда. Мы надеемся, что он будет широко принят различными редакторами и IDE. Чтобы стимулировать развитие, мы предоставляем ссылку на реализацию фронтенда RLS для Visual Studio Code.
Вы можете установить rustup на многих платформах. Это поможет нам быстро установить RLS и его зависимости.
Если у вас уже установлен rustup, обновите его, чтобы убедиться, что у вас последняя версия rustup и компилятора:
rustup update
Если вы собираетесь использовать расширение для VSCode, вы можете пропустить шаг 2.
После установки rustup выполните следующие команды:
rustup component add rls rust-analysis rust-src
Развитие внутренних компонентов rustc происходит очень быстро. Проекты, зависящие от внутренних компонентов nightly, особенно clippy, могут часто ломаться из-за этого. Когда такие поломки случаются, ночная версия релиза будет недоступна для rls. Это компромисс по сравнению с другим вариантом, когда просто не публикуется ночная версия, но это избегает блокировки nightly релизов Rust для тех, кто не нуждается в clippy/rls.Чтобы уменьшить проблемы, у нас есть:
rustup install nightly-2018-12-06
.Также см. #641.RLS построен для работы с многими IDE и редакторами; мы в основном используем VSCode для тестирования RLS. Самый простой способ — использовать опубликованное расширение.
Вы узнаете, что RLS работает, когда увидите это в строке состояния внизу, с вращающимся индикатором:
RLS: работает ◐
Как только вы увидите:
RLS
Тогда у вас будет полный набор возможностей. Вы можете перейти к определению, найти все ссылки, переименовать, перейти к типу и т.д. Автозавершение также доступно с использованием алгоритмов, предоставляемых Racer. По мере ввода вашего кода он будет проверяться, и сообщения об ошибках будут отображаться, когда они возникают. Вы можете навести курсор на эти сообщения, чтобы увидеть текст ошибки.
RLS может быть настроен на уровне проекта; используя расширение Visual
Studio Code, это будет сделано через файл настроек рабочего пространства
settings.json
.
Другие редакторы будут иметь свой собственный способ отправки метода
workspace/DidChangeConfiguration.
Параметры опций находятся в объекте rust
, так что ваш клиент LSP может отправлять
{"settings":{"rust":{"unstable_features":true}}}
как параметры.
Записи в этом файле будут влиять на то, как работает RLS, и как он собирает ваш проект.В настоящее время мы принимаем следующие опции:
unstable_features
(bool
, по умолчанию false
) включает нестабильные функции.
В настоящее время ни один параметр не требует этого флага.sysroot
(String
, по умолчанию ""
) если заданная строка не пустая, используйте
заданный путь в качестве sysroot для всех вызовов rustc вместо автоматического
обнаружения sysroot.target
(String
, по умолчанию ""
) если заданная строка не пустая, используйте
заданный целевой триплет для всех вызовов rustc.wait_to_build
(u64
) переопределяет длительность дебаунса сборки (мс). В противном случае эта длительность автоматически
выводится из последней длительности сборки.all_targets
(bool
, по умолчанию true
) проверяет проект так, словно вы
запускаете cargo check --all-targets
. То есть, проверяет все цели и интеграционные
тесты.crate_blacklist
([String]
, по умолчанию этот список)
позволяет указать, какие crate'ы должны быть пропущены RLS.
По умолчанию пропускаются библиотеки значительного размера, которые пользователь
часто может не интересовать напрямую, что снижает задержку сборки.build_on_save
(bool
, по умолчанию false
) включает или выключает непрерывный анализ RLS
или только после сохранения файла.features
([String]
, по умолчанию пустой) список функций Cargo для включения.all_features
(bool
, по умолчанию false
) включает все функции Cargo.* no_default_features
(bool
, по умолчанию false
) отключает стандартные функции Cargo.racer_completion
(bool
, по умолчанию true
) включает автозавершение кода с помощью
racer (что в настоящее время является нашим единственным бэкендом для автозавершения кода). Также включает
подсказки при наведении курсора и переход к определению, чтобы при отсутствии данных save-analysis падать на racer.clippy_preference
(String
, по умолчанию "opt-in"
) контролирует настойчивость диагностики clippy
при её доступности. Допустимые значения (не чувствительны к регистру):
"off"
Отключает линтеры clippy."on"
Отображает те же диагностики, что и командная строка clippy, запущенная без аргументов (clippy::all
если не переопределено)."opt-in"
Отображает только те линтеры явно включенные в коде. Начните с добавления #! [warn(clippy::all)]
в корень каждого crate, который вы хотите проверить. и следующие нестабильные опции:* build_lib
(bool
, по умолчанию false
) проверяет проект так, будто вы передали
аргумент --lib
команде cargo. Мутуально исключающийся с build_bin
и предпочитаемый
ему.build_bin
(String
, по умолчанию ""
) проверяет проект так, будто вы передали
аргумент --bin <build_bin>
команде cargo. Мутуально исключающийся с build_lib
.cfg_test
(bool
, по умолчанию false
) проверяет проект так, будто вы запускаете
cargo test
вместо cargo build
. То есть компилирует (но не запускает) тестовый код.full_docs
(bool
, по умолчанию false
) указывает rustc заполнить данные save-analysis
полной документацией исходного кода. Когда значение false
, записывается только
первый абзац. Эта опция в настоящее время имеет мало или никакого влияния на
подсказки при наведении курсора. Документация save-analysis используется только
в случае, если извлечение исходного кода не удалось. Эта опция не влияет на стандартную библиотеку.show_hover_context
(bool
, по умолчанию true
) отображает дополнительный контекст
в подсказках при наведении курсора, когда он доступен. Часто это локальное объявление переменной.
Когда значение false
, содержимое доступно только при удержании клавиши Ctrl
в некоторых редакторах.Для советов по отладке и устранению неполадок см. debugging.md.
Вы можете посмотреть в contributing.md в этом репозитории, чтобы узнать больше о вкладе в этот проект.Если вы хотите реализовать поддержку RLS в редакторе, см. clients.md.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )