-
Day 5: 함수와 모듈 기초RUST 20일 과정 2025. 1. 6. 13:42
Day 5: 함수와 모듈 기초 Day 5: 함수와 모듈 기초
1. 수업 개요
- 주제: Rust에서 함수(
fn
)를 정의/호출하고, 모듈(mod
)을 통해 코드를 분리/관리하는 방법을 배운다. - 학습 목표:
- Rust 함수의 기본 형태(매개변수, 반환값, 문장/표현식 차이)를 이해한다.
mod
키워드를 이용해 모듈을 정의하고,use
로 불러오는 방법을 배운다.- C 언어와의 함수 선언 방식 차이를 비교하고, Rust에서의 모듈 시스템을 간단히 경험한다.
2. 이론
함수 정의와 호출
- 함수 정의 문법:
fn 함수이름(매개변수: 타입, ...) -> 반환타입 { // 함수 본문 // return 키워드 사용 가능 (마지막 표현식으로 반환 가능) }
- 매개변수와 반환값:
- 매개변수 타입을 반드시 명시해야 함
- 반환타입(
-> Type
)을 명시하거나, 반환이 없으면-> ()
- 문장(Statement) vs 표현식(Expression):
- 문장: 어떤 동작을 수행하지만, 값을 반환하지 않는 코드(예:
let x = 5;
) - 표현식: 어떤 값을 계산해 반환하는 코드(예:
5
,x + 1
, 블록{ }
안 마지막 줄) - 예:
fn add(a: i32, b: i32) -> i32 { a + b // 마지막 표현식 -> 반환값 }
모듈(
mod
) 기초- 모듈 정의:
mod my_module { pub fn hello() { println!("Hello from my_module!"); } }
- 모듈 사용(
use
):fn main() { my_module::hello(); // 직접 호출 // 또는 use my_module::hello; hello(); }
- 파일/폴더 구조:
src ├── main.rs // fn main() + mod 선언 └── my_module.rs // 모듈 본문
C 언어와의 차이점
- C에서는 함수 선언(프로토타입) + 정의가 필요할 때가 있음. Rust는 상단 선언이 없어도 컴파일러가 순서대로 찾아감.
- 모듈과 헤더 파일(.h) 개념이 다른 방식으로 작동. Rust에서는
mod
,use
로 직접 코드 구조를 정의. - 함수 파라미터와 반환값의 타입 추론 범위가 제한적이므로, 대부분 명시적 타입 작성.
3. 실습
기본 함수 만들기
fn add(a: i32, b: i32) -> i32 { a + b } fn main() { let result = add(3, 4); println!("3 + 4 = {}", result); }
문장 vs 표현식 구분 연습
let result = { let x = 2; x + 3 // 세미콜론 없음 }; println!("result = {}", result); // 5
모듈 분리 실습
- 단일 파일 내 모듈:
mod calculator { pub fn add(a: i32, b: i32) -> i32 { a + b } } fn main() { let sum = calculator::add(3, 4); println!("3 + 4 = {}", sum); }
- 파일 분리 모듈:
// src/main.rs mod calculator; fn main() { let sum = calculator::add(10, 20); println!("10 + 20 = {}", sum); }
// src/calculator.rs pub fn add(a: i32, b: i32) -> i32 { a + b }
use
키워드 실습use calculator::{add, sub}; fn main() { let result = add(5, 3); println!("5 + 3 = {}", result); }
4. 마무리 및 과제
오늘 배운 내용 정리
- Rust 함수의 구조: 파라미터 타입, 반환 타입, 마지막 표현식
- 문장 vs 표현식 차이,
return
키워드 vs 블록 마지막 값 - 모듈(
mod
) 정의,use
로 모듈 함수/타입 불러오기 - C 언어와의 함수/파일 구조 차이
과제(실습 문제)
- calc 모듈을 새로 만들어서,
add
,sub
,mul
,div
네 함수를 구현하고,main.rs
에서 네 함수를 호출해 각각의 결과를 콘솔에 출력.- 모듈과 함수를 분리하여(파일 분리),
use calc::add
와 같이 개별 함수만 가져와 쓰는 예시 작성. - 함수의 마지막 표현식이 세미콜론으로 끝나는 경우와 아닌 경우를 각각 실험해보고, 결과를 주석으로 정리하기.
학습 팁
- 함수 단위로 코드를 명확히 분리하면, 추후 프로젝트가 커졌을 때 테스트와 재사용성이 좋아진다.
- Rust는 모듈 구조가 C/Java와 조금 다르므로, 작은 예시부터 차근차근 구조를 나눠보자.
- Git/GitHub를 사용 중이라면, 모듈 분리 전/후 버전으로 나누어 커밋해볼 것.
5. 수업 진행 예시 타임라인 (총 50분 수업 기준)
- (10분) 이론: 함수 정의/반환, 문장 vs 표현식, 모듈 개념 및
mod
/use
키워드 - (5분) 질의응답: C 언어와의 비교, 함수 프로토타입 없는 Rust의 특징
- (20분) 실습:
- 간단한 함수(
add
,sub
등) 작성 및 호출 - 모듈 분리,
use
키워드를 사용한 코드 구조화
- 간단한 함수(
- (10분) 실습 코드 공유 & 디버깅
- (5분) 마무리, 과제 안내
정리
함수와 모듈은 Rust 프로젝트를 체계적으로 구성하는 기본 요소입니다.
- 함수에서는 특히 표현식을 통한 반환이 낯설 수 있지만, 익숙해지면 코드가 간결해집니다.
- 모듈 시스템은 Rust 프로젝트 규모가 커질수록 큰 힘을 발휘하므로,
- 작은 실습을 통해 파일 분리, 모듈 간 의존 관계, 공개 범위(
pub
) 등을 차근차근 익혀두는 것이 좋습니다.
이제 Rust 기본 문법과 함께, 조금 더 큰 스케일의 코드 구조화가 가능해졌습니다.
다음에는 구조체나 열거형 등을 배우며, 실제로 구조화된 데이터와 함께 작동하는 함수를 다뤄볼 예정입니다!'RUST 20일 과정' 카테고리의 다른 글
Day 4: 기본 제어문 (if, loop, while, for) (0) 2025.01.06 Day 3: Ownership & Borrowing (0) 2025.01.06 Day 2: 기초 문법 (변수, 스코프, 데이터 타입) (0) 2025.01.06 Day 1: Rust 소개 & 개발환경 설정 (2) 2025.01.06 ChatGPT o1의 힘을 빌어 20일 과정의 RUST 강의 자료를 제작합니다 (0) 2025.01.06 - 주제: Rust에서 함수(