Rust 학습 No.1~Hello World~

5983 단어 Rusttech

개요


이것은 문외한이 프로그래밍 언어인 Rust를 배웠다는 보도이다.
러스트 쓰면 멋있죠?이런 동기로 공부하고 있다.
기본적으로 자기를 향한 기사여서 별로 친절하지 않다.

학습용 창고


https://github.com/MasahikoJinno/study-rust

전제 조건


$ sw_vers
ProductName:    macOS
ProductVersion: 11.2.2
BuildVersion:   20D80
$ brew -v
Homebrew 3.0.7
Homebrew/homebrew-core (git revision 9077fcaeec; last commit 2021-03-20)
Homebrew/homebrew-cask (git revision 6a506eefa6; last commit 2021-03-20)

환경 구조


Rust 설치


brew install rust

버전 확인


$ rustc --version
rustc 1.50.0
$ cargo --version
cargo 1.50.0

※ 홈brew를 사용하지 않을 경우


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

프로젝트 작성


생성 명령 실행


각 디렉토리를 생성할 때
cargo new hello
디렉토리를 Rust의 항목으로 설정한 경우
cargo init
왠지 npm 같네요.

결실


명령을 실행한 후 다음 파일을 생성합니다.
~/w/m/study-rust ❯❯❯ tree
.
├── Cargo.lock
├── Cargo.toml
├── README.md
└── src
    └── main.rs

1 directory, 4 files

Cargo.toml


이것은 대략 패키지입니다.덜렁이
Cargo.toml
[package]
name = "study-rust"
version = "0.1.0"
authors = ["MasahikoJinno <[email protected]>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

Cargo.lock


이것은 아마도 야른일 것이다.lock 및 package-lock.덜렁이
Cargo.lock
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "study-rust"
version = "0.1.0"

src/main.rs


원본 파일.
컴파일러 언어를 오랫동안 쓰지 않았기 때문에 이런main 파일식이 그립다.
Hello World까지 자동으로 생성됩니다.
src/main.rs
fn main() {
    println!("Hello, world!");
}

실행하다


cargo run


다음 명령을 실행하면build이 진행됩니다.
개발과 학습에 편리하다.
$ cargo run

cargo build


build 전용 명령
$ cargo build

성과물


build에서 성과물은 target/의 부하로 출력됩니다.
tree target
target
├── CACHEDIR.TAG
└── debug
    ├── build
    ├── deps
    │   ├── study_rust
    │   ├── study_rust.d
    │   └── study_rust.dSYM
    │       └── Contents
    │           ├── Info.plist
    │           └── Resources
    │               └── DWARF
    │                   └── study_rust
    ├── examples
    ├── incremental
    │   └── study_rust-i4przhxy7ffj
    │       ├── s-fwxjnfzrit-1i3edt1-3t7sykxlxqd6f
    │       │   ├── 1h7getjdrqwg6tlu.o
    │       │   ├── 1vw2akw1crbzv8ck.o
    │       │   ├── 28t2rupsrdt1y5j6.o
    │       │   ├── 2pdqpu4d1nj7th54.o
    │       │   ├── 2uq22bc1ond0s23k.o
    │       │   ├── 36jrlkyjl494ka2w.o
    │       │   ├── 3s8quisig1bfe1e2.o
    │       │   ├── 5ethmr3ni1xkflzz.o
    │       │   ├── dep-graph.bin
    │       │   ├── query-cache.bin
    │       │   └── work-products.bin
    │       └── s-fwxjnfzrit-1i3edt1.lock
    ├── study-rust
    ├── study-rust.d
    └── study-rust.dSYM -> deps/study_rust.dSYM

12 directories, 19 files

상기 상황에서target/debug/study-rust는 실행 파일이기 때문에 아래 명령을 사용하여 실행할 수 있다.
$ target/debug/study-rust
Hello, world!

명령


rustc 명령을 사용하여build을 진행할 수도 있습니다.
카고 명령을 사용하면 여러 파일을 한꺼번에 컴파일할 수 있다
파일 하나만 대상으로 하려면rustc 명령을 사용할 수도 있습니다.
$ rustc src/main.rs
pwd에서 main라는 실행 파일을 생성합니다.
$ .main
Hello, world!
코드를 빨리 써서 빨리 사용하려면 편리합니다.
※ evcxr_리플이라는 리플이라는 크레인도 있어요.

감상


아직 아무것도 하지 않았지만 헬로 월드까지 문턱은 그리 높지 않다.
※ 최소한 3개 지령을 수행하면 헬로월드가 터미널에 표시됩니다.
Hello World의build가 느리다는 것을 느끼지 못했다.
※ 어떤 언어는 build이 느린 것 같다
npm의 카고가 있기 때문에 자바스크립트를 쓰는 사람도 손쉽게 쓸 수 있다고 생각합니다.
Go와 비교하기 쉬워(※) 나도 Go를 만져보고 싶다
※ 컴파일러 언어, 단일 바이너리 등 공통점이 많은 것 같아요.사용법과는 다르지만(그냥 생각하고 있을 수도 있다)

PS


Rust의 컴파일 오류가 아주 친절하네요.

좋은 웹페이지 즐겨찾기