vscode에서 rust 사용하기 (Linux)

Pilgyeong_G·2020년 5월 30일
0

rust-with-vscode

목록 보기
1/2

해당 포스트는 Linux를 대상으로 한다. 필자는 visual studio codespaces를 기반으로 테스트하고 포스팅했으니 만약 포스트의 내용과 다른게 있다면 댓글로 알려주기 바란다.

※ 만약 wsl에서 시도를 할 경우 우분투 버전이 20.04면 rustup 설치가 되지 않을 수 있다. 이는 wsl 자체 오류이므로 괜한 삽질하지 말길 바란다.


설치

rust를 설치하기 위해 shell에 아래 명령어를 입력하자. 이 명령어는 rustup을 설치 스크립트를 이용해 다운로드한다.

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

처음 실행 시 설치 옵션이 아래처럼 뜰 것이다. 1을 입력해 설치를 진행하자.

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

rustup을 통해 rust를 설치하면 cargo도 함께 설치된다. 현재 shell에 적용하기 위해 아래 명령어를 입력하자.

source $HOME/.cargo/env

cargo로 새로운 러스트 프로젝트를 만들고, vscode로 연다.

cargo new --bin hello_rust

이제 vscode에서 확장 프로그램을 설치할 차례다. Ctrl + Shift + P를 눌러 Command Palete를 열고, 아래 명령어들을 하나씩 입력해 설치한다.

ext install matklad.rust-analyzer
ext install vadimcn.vscode-lldb
ext install bungcip.better-toml

이제 다시 Command Palete에서 아래 명령어를 입력해 vscode를 다시 시작하자.

> reload window

vscode를 다시 시작하면 오른쪽 아래에 rust-analyzer를 설치할 것이냐는 알림이 뜬다. "Download now"를 눌러 설치하자.

이제 rust-analyzer를 설정하기 위해 아래 문장을 vscode의 settings.json에 붙여 넣고 다시 리로드 한다. 만약 뭔가를 설치하라는 알림이 뜨면 버튼을 눌러 설치하면 된다.

"rust-analyzer.debug.engine": "vadimcn.vscode-lldb"

설정을 끝마치면 main.rs를 아래 코드로 바꾸고 println!()에 커서를 올려 사진처럼 설명이 잘 나오는지 확인한다.

fn main() {
    let x = 1 + 2;
    println!("{}", x);
}

디버깅도 잘 되는지 확인해보기 위해 println!()에 F9를 눌러 중단점을 설정하고 main() 함수 위 Debug를 눌러서 디버깅이 잘 되는지 확인한다.

디버깅

이제 CodeLLDB를 통한 디버깅을 해보자.

F5를 처음 누르면 나오는 Launch.json 설정 창에서 LLDB를 선택하면 launch.json이 없다는 경고 창이 뜬 후, CodeLLDB에서 Cargo.toml을 자동으로 인식하여 launch.json을 구성한다는 알림 창이 뜰 것이다. Yes를 눌러 launch.json을 생성하자.

F5를 눌러 디버깅할 때 중단점에서 잘 멈추는지 확인해보자.

2개의 댓글

comment-user-thumbnail
2020년 7월 4일

이 글이 큰 도움이 되고 있습니다. 미리 감사드립니다.

rust를 리눅스에서 해보려고 시도하고 있습니다.
그런데 이 부분이 잘 이해가 안돼서 질문드립니다.

"이제 rust-analyzer를 설정하기 위해 아래 문장을 vscode의 settings.json에 붙여 넣고 다시 리로드 한다"

settings.json이 어디를 말하는건가요?
Settings -> Extensions -> Rust Analyzer를 클릭해보니 뭔가 많이 나오는데요.
아래로 스크롤 하다보면 "Edit in settings.json" 이것이 나오는데 이것을 선택해서 붙여넣으라는 건가요?
그런데 이것이 10개나 나옵니다. 어디에 붙여 넣여넣어야 하는건가요?

1개의 답글