let, match, method, associated functions, external crates
- 1~100 사이의 임의의 정수를 생성하고, 플레이어가 숫자를 맞추는 고전적인 게임이다.
새로운 프로젝트 생성
$ cargo new guessing_game --bin
$ cd guessing_game
플레이어 입력값 처리
- 사용자 입력 요청, 입력값 처리 후 입력값이 기대하던 형식인지 검증한다.
- src 폴더의 main.rs 에 아래와 같이 작성한다.
use std::io;
fn main() {
println!("Guess the number!");
println!("Please input your guess.");
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("Failed to read line");
println!("You guessed: {}", guess);
}
- 입출력을 담당하는 io 라이브러리는 표준 라이브러리 std 안에 들어있다. use 로 사용한다.
- 변수를 생성하는 키워드는 let 이다.
러스트의 변수는 기본적으로 불변이며, 변수 앞에 mut 을 사용하여 가변변수를 만든다.
let foo = 5; // immutable
let mut bar = 5; // mutable
- 따라서 위의 let mut guess 구문에서 guess 는 가변변수로 생성되었다.
- String 은 표준 라이브러리에서 제공하는 확장 가능한 UTF-8 인코딩 문자열 타입이다. ::new 에 있는 :: 는 new 가 String 타입의 연관함수라는 것을 나타낸다.
연관함수는 하나의 타입을 위한 함수이며, 위 경우 String 타입이 사용할 수 있는 함수라는 것을 의미한다.
- new 함수는 새로운 빈 문자열을 생성한다. 따라서 현재 guess 변수에는 빈 문자열이 연결되어 있다.
- io::stdin() 도 마찬가지로 표준 입출력 라이브러리 io 의 연관함수 stdin() 을 의미한다.