0Pricing
Learn Rust Coding · 강의

Derive API

구조체에서 인수 만들기

Derive API은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

derive API

derive API를 사용하면 CLI를 구조체로 설명하고 #[derive(Parser)]를 통해 clap이 분석기를 생성하도록 할 수 있습니다.

  • 빌더 API보다 반복해서 작성해야 하는 코드가 적습니다
  • 형식이 안전합니다. 필드가 형식이 지정된 값이 됩니다

derive 기능을 활성화하면 사용할 수 있습니다.

최소한의 Parser 구조체

#[derive(Parser)]로 구조체에 주석을 달고 main에서 Cli::parse()를 호출하세요. 각 필드는 하나의 인수가 됩니다.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    name: String,
}

fn main() {
    let cli = Cli::parse();
    println!("Hello, {}!", cli.name);
}

필드를 위치 인수로 만들기

name: String처럼 단독으로 작성한 필드는 필수 위치 인수입니다. 필드 이름이 값의 이름이 됩니다.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    input: String,
    output: String,
}

선택적 필드

필드를 Option으로 감싸 선택 사항으로 만드세요. 사용자가 생략하면 None을 얻습니다.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long)]
    config: Option<String>,
}

플래그와 짧은 이름 및 긴 이름

#[arg(short, long)] 주석은 필드 이름에서 -v와 --verbose를 파생합니다. bool 필드는 스위치가 됩니다.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long)]
    verbose: bool,
}

형식이 지정된 값

clap은 필드의 형식으로 값을 분석합니다. u32 필드는 숫자가 아닌 입력을 자동으로 거부합니다.

use clap::Parser;

#[derive(Parser)]
struct Cli {
    #[arg(short, long, default_value_t = 1)]
    count: u32,
}

분석된 Cli 모델링

분석이 끝난 Cli 구조체는 일반 데이터일 뿐입니다. 이 실행 가능한 버전에서는 분석 후 필드를 사용하는 방법을 보여 줍니다.

struct Cli {
    name: String,
    count: u32,
    verbose: bool,
}

fn main() {
    let cli = Cli { name: "Alice".to_string(), count: 2, verbose: true };
    for _ in 0..cli.count {
        println!("Hello, {}! (verbose={})", cli.name, cli.verbose);
    }
}

열거형으로 하위 명령 모델링

derive API에서는 #[derive(Subcommand)] 열거형으로 하위 명령을 모델링합니다. 각 변형이 하나의 명령이 됩니다.

use clap::{Parser, Subcommand};

#[derive(Parser)]
struct Cli {
    #[command(subcommand)]
    cmd: Commands,
}

#[derive(Subcommand)]
enum Commands {
    Add { task: String },
    List,
}

열거형 하위 명령 일치시키기

Cli::parse() 후에는 열거형을 일치시켜 명령을 분배합니다. 변형의 데이터도 깔끔하게 구조 분해할 수 있습니다.

use clap::Parser;

fn run(cli: Cli) {
    match cli.cmd {
        Commands::Add { task } => println!("add {}", task),
        Commands::List => println!("list"),
    }
}

command 주석으로 메타데이터 설정

구조체에 #[command(name, version, about)]을 추가해 CLI 메타데이터를 설정하세요. version은 Cargo에서 자동으로 읽을 수 있습니다.

use clap::Parser;

#[derive(Parser)]
#[command(name = "greet", version, about = "Greets people")]
struct Cli {
    name: String,
}

열거형 분배 예시

열거형을 기준으로 일치시키는 패턴은 derive 하위 명령의 핵심입니다. 다음은 이 아이디어를 독립적으로 실행할 수 있는 Rust 코드로 나타낸 예입니다.

enum Command {
    Add(String),
    List,
}

fn main() {
    let cmd = Command::Add("Write code".to_string());
    match cmd {
        Command::Add(task) => println!("Added: {}", task),
        Command::List => println!("Listing"),
    }
}

빠른 확인

derive API에 대한 이해도를 확인해 보세요.

복습

derive API는 구조체를 분석기로 변환합니다.

  • #[derive(Parser)]와 Cli::parse()를 사용합니다
  • 단독 필드는 위치 인수이며, Option으로 감싸면 선택 사항이 됩니다
  • #[arg(short, long)]으로 플래그와 옵션을 파생합니다
  • #[derive(Subcommand)] 열거형으로 하위 명령을 모델링합니다

다음으로 값 검증과 완성도 높은 도움말 출력을 알아봅니다.

자주 묻는 질문

“Derive API” 강의는 무료인가요?

네 — “Derive API” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

“Derive API”에서 뭘 배우나요?

구조체에서 인수 만들기 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“Derive API” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. clap 기초
  2. 하위 명령
  3. Derive API
  4. 검증과 도움말
← Learn Rust Coding(으)로 돌아가기