πŸš€ Rust Cargo μ‚¬μš©λ²•

Sei KimΒ·2025λ…„ 1μ›” 12일

Rust In Actions

λͺ©λ‘ 보기
3/3

πŸ› οΈ μƒˆ ν”„λ‘œμ νŠΈ μƒμ„±ν•˜κΈ°

cargo new ${project_name}으둜 μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

 MacSter ξ‚° ~/Code/Rust/learn/basic ξ‚° ξ‚  feat/cargo ξ‚° cargo new cargo
    Creating binary (application) `cargo` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

cargo new cargoλ₯Ό μž…λ ₯ν•˜μ—¬ μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ 섀정은 ${project_name}.toml에 μžˆμŠ΅λ‹ˆλ‹€. ν•œλ²ˆ 확인해보면 λ‹€μŒκ³Ό 같은 ꡬ쑰λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.

[package]
name = "cargo"
version = "0.1.0"
edition = "2021"

[dependencies]

⚠️ Cargo νŒ¨ν‚€μ§€ 이름은 숫자둜 μ‹œμž‘ν•˜λ©΄ μ•ˆλœλ‹€!

νŒ¨ν‚€μ§€ 이름은 숫자둜 μ‹œμž‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€!
μ•„λž˜μ²˜λŸΌ 숫자둜 μ‹œμž‘ν•˜λŠ” 이름을 μ‚¬μš©ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. 😒

 MacSter ξ‚° ~/Code/Rust/learn ξ‚° ξ‚  main ξ‚° cargo new 250101_cargo
    Creating binary (application) `250101_cargo` package
error: invalid character `2` in package name: `250101_cargo`, the name cannot start with a digit
If you need a package name to not match the directory name, consider using --name flag.
If you need a binary with the name "250101_cargo", use a valid package name, and set the binary name to be different from the package. This can be done by setting the binary filename to `src/bin/250101_cargo.rs` or change the name in Cargo.toml with:

    [[bin]]
    name = "250101_cargo"
    path = "src/main.rs"

πŸ“Œ ν•΄κ²° λ°©μ•ˆ

  1. νŒ¨ν‚€μ§€ 이름을 숫자둜 μ‹œμž‘ν•˜μ§€ μ•Šλ„λ‘ λ³€κ²½ν•˜μ„Έμš”.
  2. ν•„μš”ν•œ 경우 --name ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 디렉터리 이름과 λ‹€λ₯Έ νŒ¨ν‚€μ§€ 이름을 μ„€μ •ν•˜μ„Έμš”.

πŸ“¦ Dependency 관리

CargoλŠ” npm λ˜λŠ” yarn κ³Ό λΉ„μŠ·ν•˜κ²Œ Dependencyλ₯Ό 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.
이둜 인해 μ™ΈλΆ€ 라이브러리λ₯Ό μ‰½κ²Œ κ²€μƒ‰ν•˜κ³  μ„€μΉ˜ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. πŸŽ‰

cargo search ${dependency_name}

예λ₯Ό λ“€μ–΄, νŠΉμ • Dependencyλ₯Ό κ²€μƒ‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

βž• Dependency μΆ”κ°€: cargo add

cargo add ${dependency_name} # μ„€μΉ˜

Dependencyλ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ μœ„ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.

βž– Dependency μ‚­μ œ: cargo remove

cargo add ${dependency_name} # μ‚­μ œ

μ„€μΉ˜λœ Dependencyλ₯Ό μ‚­μ œν•˜λ €λ©΄ μœ„ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

🎲 Rust의 rand λ””νŽœλ˜μ‹œ μ‚¬μš©ν•˜κΈ°

rand λ””νŽœλ˜μ‹œλ₯Ό μ„€μΉ˜ν•œ ν›„, 이λ₯Ό ν™œμš©ν•˜μ—¬ κ°„λ‹¨ν•œ 랜덀 숫자 생성 μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

use rand::Rng;

fn main() {
    let mut rng = rand::thread_rng();

    let random_number: i32 = rng.gen_range(1..=100);
    println!("랜덀 숫자 (1~100): {}", random_number);

    let random_float: f64 = rng.gen();
    println!("랜덀 μ‹€μˆ˜ (0.0~1.0): {}", random_float);
}

✍️ μ„€λͺ…

  • use rand::Rng;: Rustμ—μ„œ Java의 import와 μœ μ‚¬ν•˜κ²Œ μ™ΈλΆ€ λͺ¨λ“ˆμ„ κ°€μ Έμ˜΅λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” rand의 Rng 트레이트λ₯Ό 가져와 랜덀 숫자λ₯Ό μƒμ„±ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • rand::thread_rng(): ν˜„μž¬ μŠ€λ ˆλ“œμ—μ„œ μ‚¬μš©ν•  랜덀 숫자 생성기λ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.
  • gen_range(1..=100): 1μ—μ„œ 100 μ‚¬μ΄μ˜ 랜덀 μ •μˆ˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • gen(): 0.0μ—μ„œ 1.0 μ‚¬μ΄μ˜ 랜덀 μ‹€μˆ˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

μ•„λž˜λŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œμ˜ 좜λ ₯ ν™”λ©΄μž…λ‹ˆλ‹€.
(μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ 값이 λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.)

κ²°λ‘ !

Rust와 Cargo의 쑰합은 κ°•λ ₯ν•œ 생산성과 μœ μ—°μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
Rust μƒνƒœκ³„λ₯Ό 적극 ν™œμš©ν•˜μ—¬ 효율적인 κ°œλ°œμ„ μ§„ν–‰ν•΄λ³΄μ„Έμš”! πŸŽ‰

0개의 λŒ“κΈ€