언어 서버
언어 서버 프록시는 IDE 탐색, 진단, 읽기 쉬운 매핑 표현식 타입을 제공합니다. 에디터에서 표시되는 방식은 타입 검사에 영향을 주지 않습니다.
이 도구 레퍼런스에서는 furiosa-rust-analyzer-proxy의 설치와 설정을 자세히 설명합니다. 이 도구는 매핑 표현식에 대한 IDE 지원을 제공하는 rust-analyzer용 프록시입니다. 빠른 시작에서는 다른 개발 도구와 함께 이 도구를 소개하며, 이 섹션에서는 설치와 설정 단계를 안내합니다. 프록시는 내부에서 rust-analyzer를 실행하고 일반적인 Rust 언어 서버 트래픽을 그쪽으로 전달하며, 에디터에 표시되는 결과를 다시 작성하여 매핑 타입이 m![...] 표기법으로 표시되도록 합니다.
설치
-
rust-analyzer가 설치되어 있고PATH에서 사용할 수 있는지 확인하십시오. 프록시는 이 업스트림rust-analyzer프로세스를 실행하여 표준 Rust IDE 기능을 제공합니다. -
GitHub 릴리스에서
furiosa-rust-analyzer-proxy바이너리를 다운로드하고 실행 권한을 부여하십시오:curl -L -o furiosa-rust-analyzer-proxy \ https://github.com/furiosa-ai/furiosa-opt/releases/latest/download/furiosa-rust-analyzer-proxy-x86_64-unknown-linux-gnu chmod +x furiosa-rust-analyzer-proxy -
기본 언어 서버 대신 다운로드한 바이너리를 사용하도록 IDE를 설정하십시오. 예를 들어 VSCode에서는
settings.json을 다음과 같이 수정하십시오:{ "rust-analyzer.server.path": "/path/to/furiosa-rust-analyzer-proxy", "rust-analyzer.inlayHints.maxLength": null // recommended to reduce '_' truncation }
환경 변수
환경 변수를 사용하여 언어 서버를 설정할 수 있습니다. 예를 들어 VSCode에서는 settings.json을 다음과 같이 수정하십시오:
{
"rust-analyzer.server.extraEnv": {
"ENV_NAME": "env_value"
}
}
FURIOSA_RUST_ANALYZER_PROXY_UPSTREAM: 프록시가 실행하는 업스트림rust-analyzer바이너리의 사용자 지정 경로입니다. 기본값은PATH에 있는rust-analyzer입니다.
기능
프록시는 표준 Rust IDE 기능을 rust-analyzer에 위임하고, 에디터에 표시되는 결과의 매핑 표현식을 다시 작성합니다.
호출 계층
들어오는 호출과 나가는 호출의 계층 보기를 제공합니다. 계층 항목에 표시되는 함수 세부 정보는 매핑 표현식으로 변환됩니다.
코드 액션
빠른 수정, 리팩터링 및 기타 에디터 동작을 제공합니다. 액션 제목과 텍스트 편집 내용은 매핑 표현식으로 변환됩니다.
코드 완성
이름, 메서드, 함수, 타입, 스니펫에 대한 완성 항목을 제공합니다. 완성 레이블, 세부 정보 텍스트, 텍스트 편집 내용은 매핑 표현식으로 변환됩니다.
진단
rust-analyzer와 rustc의 진단 정보를 제공합니다. 진단 메시지와 관련 정보는 매핑 표현식으로 변환됩니다.
호버
심볼 위에 마우스를 올리면 추가 정보를 표시합니다. 추론된 타입, 함수 시그니처, 문서와 같은 호버 내용은 매핑 표현식으로 변환됩니다.
인레이 힌트
소스 코드 안에 추가 정보를 인라인으로 표시합니다. 인레이 힌트는 매핑 표현식으로 변환됩니다.
Tip
가장 정확하게 변환하려면
rust-analyzer.inlayHints.maxLength를null(길이 제한 없음)로 설정하십시오. 이렇게 하면 긴 인레이 힌트가 ’_’로 잘리는 경우가 줄어듭니다.
시그니처 도움말
함수 호출을 작성하는 동안 함수 시그니처와 현재 활성화된 매개변수를 표시합니다. 시그니처 레이블, 매개변수 레이블, 문서는 매핑 표기법을 사용하도록 다시 작성되며, LSP 클라이언트가 반환하는 오프셋 기반 매개변수 레이블도 여기에 포함됩니다.
주의 사항
사용자 정의 타입의 이름이 내부 매핑 구성 요소의 이름과 같으면 언어 서버가 해당 타입을 매핑 표현식으로 잘못 해석할 수 있습니다. 예를 들어 사용자 정의 Symbol<T> 구조체를 정의하면 언어 서버가 IDE에서 이를 m![T]로 잘못 표시할 수 있습니다. 이는 순전히 UI 표시 문제이며 다른 LSP 동작에는 영향을 주지 않습니다.