Rust 설치

https://rustup.rs/ 에 방문하거나 다음 명령을 실행한다.

curl https://sh.rustup.rs -sSf | sh

이후, .bash_profile이나 .bashrc에 다음을 추가하자.

[[ -s "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env"

잘 설치되었는지 확인한다.

rustc --version

vim 설정

rust.vim 플러그인 설치

vim을 위한 rust 플러그인이 여럿 있는 것 같지만 나는 일단 rust.vim을 사용하기로 했다.

vim-plug를 사용한다면 다음과 같이 .vimrc에 추가해 준 다음 설치해주면 된다.

Plug 'rust-lang/rust.vim'

coc.nvim 을 위한 rust 플러그인 설치

rust-lang/rust.vim을 설치했다면 자동 완성과 이런저런 편의 기능을 위해 coc.nvim에 rust 설정을 해 준다.

coc.nvim의 위키에서는 세 가지 방법을 제안하는데, coc-rls는 deprecated 되었으므로 rust-analyzercoc-rust-analyzer 통해 사용하도록 하자.

  • rust-analyzer: Rust를 위한 모듈식 컴파일러의 프론트엔드.
  • coc-rust-analyzer: coc.nvim에서 rust-analyzer를 사용하기 위한 플러그인.

coc-rust-analyzer를 설치하면 알아서 rust-analyzer도 설치해 준다.

그러므로 coc.nvim이 설치된 vim에서 다음 명령을 입력하기만 하면 된다.

:CocInstall coc-rust-analyzer

이렇게 하는 것만으로 vim에서 rust와 관련된 자동완성 셋팅이 완료된다.

coc.nvim 을 위한 rust 포매터 설치

포매터가 필요하다면 coc.nvim이 설치된 vim에서 다음과 같이 coc config 파일을 불러오도록 한다.

:CocConfig

이후 다음과 같이 formatOnSaveFiletypesrust를 추가해주도록 한다.

"coc.preferences.formatOnSaveFiletypes": ["markdown", "rust"],

다음은 내 현재 설정의 전문이다.

{
    "suggest.detailField": "abbr",
    "suggest.enablePreview": false,
    "coc.preferences.formatOnSaveFiletypes": ["markdown", "rust"],
    "languageserver": {
        "golang": {
            "command": "gopls",
            "rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"],
            "filetypes": ["go"]
        }
    }
}

tagbar 설정

[[ctags]]{Universal ctags}를 쓰고 있다면 'rust-lang/rust.vim' 플러그인이 알아서 tagbar와 함께 작동한다.

새로운 프로젝트를 시작하기

새로운 디렉토리를 만들고 이동한 다음, 다음과 같이 입력한다.

cargo init

그러면 다음과 같은 하위 디렉토리와 파일들이 생겨난다.

.
├── Cargo.lock
├── Cargo.toml
├── src
│   └── main.rs
└── target

친절하게 main.rs 파일까지 만들어준다.

자동으로 생성된 main.rs 파일의 내용은 다음과 같다.

fn main() {
    println!("Hello, world!");
}

만약 디렉토리를 만드는 것이 귀찮다면 cargo new를 사용하면 된다.

cargo new hello_world

Vim에서 실행하기

vim에서 다른 평범한 터미널 명령을 실행하는 방법을 쓰면 된다.

:!cargo run 파일명

현재 편집중인 파일을 실행하고 싶다면 vim의 % 확장을 쓰면 된다.

:!cargo run %

만약 현재 :pwd가 프로젝트 루트라면(Cargo.toml이 있는 위치라면) 그냥 다음과 같이 실행해도 된다.

:!cargo run

만약 rust.vim을 설치했다면 다음 명령을 쓰면 된다.

:RustRun