-
[Rust] 1.getting startedrust 2023. 1. 25. 12:10반응형
https://doc.rust-lang.org/book/ch01-00-getting-started.html
rust book 챕터별로 정리하는 글이다. 오늘은 챕터1 한거 정리
일단 굉장히 친절한 doc이 였다. 챕터1이라 그런가?
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
가장 안됬던거는 설치하는 부분이였다. curl 를 이용해서 다운로드 받으면 됬는데
curl: (4) LibreSSL was built without TLS 1.3 support
이렇게 나오면서 설치가 안되서 검색해보니까 해당 내용이 많지는 않았다. homebrew 로 curl 지우고 재설치도 해보고 curl-openssl 도 설치하고 참조경로도 바꿔놓고 했는데 잘 안되서 꽤나 시간 썻다 근데 안되서 다른 설치방법 없나 찾다가 rust 홈페이지 에서 보니까 tlsv1.2 로 되어있길래 아래껄로 하니까 됬다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
어떤 차이인지 궁금하긴 한데 시간 많이 쓰기도 했고 목적에서 벗어나는거 같아서 그냥 넘어갔다.
이후에는 rustc --version 체크 해주면서 설치 확인 하면된다.
그다음은 폴더/파일 만들고 hello world 찍기
파일명은 snake style 로 하라고 이런거 까지 적어뒀네 main 이라는 함수는 rust 프로그램에서 가장 먼저 실행되는 함수로 특별하다.
console 과 같이 println 이라는 예약어가 있고 이걸 rust macro 라고 하는거 같다. macro에 관해서는 챕터19에 있다고 하는데 챕터별로 정리하려고 했는데 되게 많네
여기서 println! 이렇게 호출하는데 nomal function 과 macro 를 구분하기 위하여 ! 를 붙인다고 생각하면 된다.
rustc main.rs 를 통해 컴파일을 할수 있고 하게되면 main 이라는 바이너리 파일이 생성된다. 그리고 ./main 으로 실행하게 되면 hello world 가 찍히는걸 확인할수 있다.
rustc 를 통해 컴파일 하고 컴파일된 파일을 실행할 수도 있지만 cargo 라는 package manager 를 사용하면 build system 까지 사용할수 있다. cargo 는 위에서 rustup 설치시 같이 설치 되니까 cargo --version 을 통해 확인해보자
cargo 를 통해 기본폴더를 생성할수 있는데
cargo new 폴더명
하게 되면 cargo.toml 파일과 깃 관련파일 그리고 src 폴더가 생성이 된다.
실행용 코드는 src 폴더내에서 관리하며 최상단 파일에는 readme license configuration 과같은 파일들을 위치한다.
cargo.toml 파일은 npm package.json 과 같은 역할을 하며 의존성목록과 패키지 정보를 포함하고 있다.
cargo를 통해 빌드와 실행들을 할수 있다.
cargo build cargo run cargo check
cargo build 를 하게 되면 최상단에 target > debug 폴더 가 생성되면 그위치에 컴파인된 파일이 위치하게 된다.그때 그파일을 ./target/debug/hello_cargo 와 같이 실행시켜줄수 있다.cargo run 을 하게되면 위 두개 동작 컴파일과 실행을 한번에 동작할수있다.
cargo check 는 빌드한 파일을 만들지는 않고 실행이 가능한 지만 체크하는 명령어이다. 이는 코드를 작성중에 실제 빌드가 필요하지는 않지만 실행에 문제가 없는지 확인만 하면 되는 시점에 유용하게 사용할수 있는데 되게 친절한 기능인거 같다.터미널에서 동작들을 확인하는것도 되게 직관적이라고 느껴진다.
--release 라는 flag를 사용하면 target의 debug가 아닌 release 라는 폴더내에 컴파일된 파일이 위치하게 되는데 이때는 좀더 최적화된 상태로 컴파일 할수있다.
'rust' 카테고리의 다른 글
[Rust] 4. ownership(2).함수와 ownership (0) 2023.01.28 [Rust] 4. ownership(1). ownership, 변수와 ownership (0) 2023.01.28 [Rust] 3. 변수, 데이터타입 (0) 2023.01.26 [Rust] 2.programing guessing game (0) 2023.01.25 [Rust] rust를 배워보기로한 이유 (0) 2023.01.23