Rust(2) -Rust를 공부할때 알아두면 좋은것들 + 빌드

Rust의 장점은 지난 글에서도 많이 이야기했지만, 정말 좋은점은 low-level 언어라 성능이 좋으면서도 가능한한 많은 편의점을 제공하기 위했다는건데요. 그중에 하나는 윈도우에서 작성한 코드가, 맥에서도 그대로 돌아간다는 겁니다. 물론 윈도우에 의존성이 있는 라이브러리를 사용했다면 맥에서 실행할순 없겠지만, 기본적인것들을 지원해준다는 거에요. 예를들어 창을 만드는코드가 있으면 이는 Windows 와 MacOS에서 공용으로 사용가능합니다. 하지만, 버튼이나 스크롤바등 운영체제에 종속적인 기능은 호환이 되지않기때문에 커스텀 UI를 사용해야합니다.

Custom UI

Custom UI로는 egui나 Slint 같은 라이브러리를 사용하면 버튼, 스크롤바 등의 코드를 수정없이 모든 OS에서 똑같이 사용할수 있습니다.

WebGPU

WebGPU는 2022~2023년쯤 출시되어 현재 2026년 안정화가 된 차세대 표준 3D 그래픽 라이브러리입니다. 많은사람들이 잘알고있는 DirectX, Metal, Vulkan등으로 자동으로 컨버트해주는 라이브러리인데 성능저하없이 직접 Direct코드를 사용하는것만큼 빠릅니다. 이제는 Web에서도 WebGPU를 사용할수있고, 그 유명한 Three.js 또한 webGPU를 사용하는것으로 전환된걸로 알고있습니다.

빌드 및 컴파일

Rust의 파일구조는 요즘 웹개발자들이 사용하는 node.js 패키지관리도구와 비슷합니다 node.js(npm), bun, 등을사용해서 프로젝트를 만들면 그안에 소스코드는 src폴더안에 있고 루트에는 .gitignore와 패키지를 관리해주는 json파일등이 존재하는데 Rust도 마찬가지로 Cargo.toml에 프로젝트에대한 기본정보와 의존성정보가 들어있습니다. lock기능도 똑같이 존재하구요.

프로젝트 생성시 기본코드

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

이렇게 C++과 비슷하면 main함수가 있는데요 마치 JS처럼 뒤에 ; 은 붙여도 되고 안붙여도 되더라구요.

Build

빌드시 C++처럼 Debug용과 Release용이 따로있는데 아래처럼 해주면됩니다.

#Debug
cargo build

#Release
carbo build --release

그리고 rustc 명령어로도 exe파일을 만들수있는데 이건 debug와 같지만 정보가 조금 적어 100%같지않고, Release도 아니라고합니다. 근데 문제는 순수 rust 코드만 사용하면 rustc ./src/main.rs 이런식으로 명령어를 입력하여 exe파일을 만들수있는데, 만약 추가된 라이브러리같은게 있으면 이것들을 하나하나 적어줘야해서 사실상 쓸수없을정도로 복잡해집니다. 따라서 그냥 cargo build를 사용 하면 될것 같습니다.

디버그는 컴파일은 빠르지만 용량이 크고 릴리즈는 최적화를위해 컴파일이 오래걸리지만 용량이작고 프로그램이 빠릅니다. 따라서 내코드가 얼마나 빠른지 보려면 Release를 사용하고 개발중에는 cargo run 을 사용합니다. 그리고 만약 프로그램 실행할 필요없이 컴파일러로 코드만 체크하고싶으면 check명령을 쓰면됩니다. 컴파일은 실행파일을 생성하지않기 때문에 훨씬 빠른 컴파일이 가능합니다.

#Debug 컴파일 + 실행
cargo run

#컴파일만
cargo check

tree 의존성 정보 보기

라이브러리 의존성 정보를 보는 명령어가 있습니다. 아래 사진처럼 계층구조를 포함해 보여주기때문에, cargo.lock 파일을 직접보는것보다 편합니다.

cargo tree

파일이름

Rust에서는 파일이름에 단어를 두개이상 사용할때 Sanke Case로 파일이름을 만들기로 규칙을 정했다고합니다. 그래서 두글자 이상인경우 hello_world.rs 이런식으로 만드는게 좋습니다. 그 이유는 대소문자를 구분하지않는 윈도우와 구분하는 리눅스 운영체제 사이에서 협업할때 빌드오류가 발생 할수 있습니다.

댓글 남기기