기본 Rust 프로그램 구조 이해

완료됨

이 단원에서는 간단한 Rust 프로그램의 구성 방법에 대해 살펴봅니다.

Rust의 함수

함수는 특정 작업을 수행하는 코드 블록입니다. 프로그램의 코드를 작업에 따라 블록으로 분리합니다. 이렇게 분리하면 코드를 파악하고 관리하기가 더 수월합니다. 작업을 위한 함수를 정의한 후에 해당 작업을 수행해야 할 때 함수를 호출할 수 있습니다.

모든 Rust 프로그램에는 이름이 main인 함수가 한 개 있어야 합니다. main 함수의 코드는 Rust 프로그램에서 항상 제일 먼저 실행되는 코드입니다. main 함수 또는 기타 함수에서 다른 함수를 불러올 수 있습니다.

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

Rust에서 함수를 선언하기 위해 fn 키워드를 사용합니다. 함수 이름 다음에 함수가 입력으로 예상하는 매개 변수 또는 인수 개수를 컴파일러에 알립니다. 인수는 괄호() 안에 나열됩니다. 함수 본문은 함수의 작업을 수행하는 코드이며 중괄호 {} 안에 정의됩니다. 함수 본문의 여는 중괄호가 괄호 안에 있는 인수 목록 바로 뒤에 표시되도록 코드의 서식을 지정하는 것이 가장 좋습니다.

코드 들여쓰기

함수 본문에서 대부분의 코드 문은 세미콜론 ;으로 끝납니다. Rust는 이러한 문을 순서대로 처리합니다. 코드 문이 세미콜론으로 끝나지 않으면 Rust는 시작 문이 완료되기 전에 그 다음 코드 줄을 실행해야 한다고 인식합니다.

코드에서 실행 관계를 쉽게 확인하기 위해 들여쓰기를 사용합니다. 이 서식을 보고 코드 구성 방식과 함수 작업을 완료하는 데 필요한 단계의 흐름을 알 수 있습니다. 시작 코드 문은 왼쪽 여백에서 네 개의 공백만큼 들여쓰기됩니다. 코드가 세미콜론으로 끝나지 않으면 실행할 그 다음 코드 줄이 네 개의 공백만큼 들여쓰기됩니다.

예를 들면 다음과 같습니다.

fn main() { // The function declaration is not indented

    // First step in function body
        // Substep: execute before First step can be complete

    // Second step in function body
        // Substep A: execute before Second step can be complete
        // Substep B: execute before Second step can be complete
            // Sub-substep 1: execute before Substep B can be complete

    // Third step in function body, and so on...
}

Todo! 매크로

Rust 모듈에서 연습할 때 샘플 코드에서 종종 todo! 매크로를 사용하는 것을 알 수 있습니다. Rust의 매크로는 개수가 가변적인 입력 인수의 취하는 함수와 같습니다. todo! 매크로는 Rust 프로그램에서 완성되지 않은 코드를 식별하는 데 사용됩니다. 매크로는 프로토타입 생성에 유용하거나 완료되지 않은 동작을 표시하려는 경우에 유용합니다.

다음은 연습에서 todo! 매크로를 사용하는 방법입니다.

fn main() {
    // Display the message "Hello, world!"
    todo!("Display the message by using the println!() macro");
}

todo! 매크로를 사용하는 코드를 컴파일할 때, 컴파일러는 완료된 기능을 찾을 것으로 예상되는 패닉 메시지를 반환할 수 있습니다.

   Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 1.50s
     Running `target/debug/playground`
thread 'main' panicked at 'not yet implemented: Display the message by using the println!() macro', src/main.rs:3:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

println! 매크로

main 함수는 작업 하나를 수행합니다. Rust에 미리 정의된 println! 매크로를 호출합니다. println! 매크로는 하나 이상의 입력 인수를 예상하고 이것을 화면 또는 표준 출력에 표시합니다. 이 예제에서는 매크로, 텍스트 문자열 ‘Hello, world!’에 입력 인수 하나를 전달합니다.

fn main() {
    // Our main function does one task: show a message
    // println! displays the input "Hello, world!" to the screen
    println!("Hello, world!");
}

{} 인수의 값 대체

Rust 학습 모듈 단원에서는 중괄호 {} 인스턴스가 있는 문자열과 기타 값을 포함하는 인수 목록이 있는 println! 매크로를 호출합니다. println! 매크로는 텍스트 문자열 안의 각 중괄호 {} 인스턴스를 목록의 그 다음 인수 값으로 바꿉니다.

예를 들면 다음과 같습니다.

fn main() {
    // Call println! with three arguments: a string, a value, a value
    println!("The first letter of the English alphabet is {} and the last letter is {}.", 'A', 'Z');
}

인수 3개(문자열, 값, 또 다른 값)로 println! 매크로를 호출합니다. 이 매크로는 인수를 순서대로 처리합니다. 문자열 안의 각 중괄호 {} 인스턴스가 목록의 그 다음 인수 값으로 바뀝니다.

출력은 다음과 같습니다.

The first letter of the English alphabet is A and the last letter is Z.

지식 점검

다음 질문에 대답하여 배운 내용을 확인하세요. 각 질문에 대해 하나의 대답을 선택한 다음, 답변 확인을 선택합니다.

1.

Rust 프로그램에는 몇 개의 주요 함수가 있을 수 있나요?

2.

새 함수를 선언하는 데 사용하는 Rust 키워드는 무엇인가요?

3.

println! 매크로 호출의 출력은 무엇인가요?
println!("{} is a number. {} is a word.", 1, "Two");