프로젝트 소개
RustOwl은 Rust 개발자를 위한 도구로, 변수의 소유권 이동과 수명을 시각화하여 디버깅과 최적화를 돕습니다. Rust 소스 코드를 저장하면 분석이 수행되며, 변수나 함수 호출 위에 커서를 올리면 소유권 및 수명 정보가 표시됩니다.
시각화는 색상 밑줄을 사용합니다:
- 초록색: 변수의 수명. 실선은 확실히 살아있음(이 지점에 도달하는 모든 경로에서 초기화됨을 증명)을 의미하고, 물결선은 아마 살아있음(일부 경로에서 초기화되지만 다른 경로에서는 이동, 드롭 또는 초기화되지 않을 수 있음)을 의미합니다.
- 파란색: 불변 대여.
- 보라색: 가변 대여.
- 주황색: 값 이동 / 함수 호출.
- 빨간색: 수명 오류, 예를 들어 실제 수명과 예상 수명의 차이 또는 가변 및 공유 참조의 유효하지 않은 중첩.
편집기 지원에는 VS Code 확장(Vscodium용 Open VSX에서도 사용 가능), Neovim 플러그인, Emacs 패키지가 포함됩니다. 이러한 편집기에서 변수나 함수 호출 위에 커서를 이동하고 약 2초간 기다리면 시각화가 트리거됩니다. 이 프로젝트는 확장된 프로토콜을 가진 LSP 서버를 구현하므로, 다른 편집기에서도 해당 사양에 따라 클라이언트를 구축할 수 있습니다. RustRover/IntelliJ IDE 및 Sublime Text용 타사 통합도 존재합니다.
설치 옵션에는 crates.io, Arch User Repository(rustowl-bin), WinGet이 포함됩니다. VS Code 확장은 활성화 시 RustOwl을 자동으로 설치합니다. Neovim 및 Emacs의 경우 LSP 서버를 수동으로 설치해야 합니다. 설정 후 확장은 cargo 워크스페이스의 Rust 프로그램을 저장할 때 RustOwl을 실행합니다. 첫 번째 분석은 시간이 걸릴 수 있지만, 이후 실행은 컴파일 캐싱을 사용하여 분석 시간을 줄입니다.
전제 조건은 cargo(rustup으로 설치 가능)와 지원되는 편집기입니다. 프로젝트는 최신 Rust 5개 버전을 최선의 노력으로 지원한다고 명시합니다. 알려진 제한 사항: VS Code 장식 사양으로 인해 g와 같은 디센더가 있는 문자나 괄호는 때때로 밑줄이 제대로 표시되지 않을 수 있으며, println! 매크로는 때때로 추가 출력을 생성하지만 사용성에 큰 영향을 주지는 않습니다. 호스팅된 플레이그라운드는 play.rustowl.rs에서 제공됩니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.