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개의 답글

관련 채용 정보