[일반 프로그래밍 개념] 데이터 타입 - 2. 컴파운드 타입
2022. 5. 29. 16:44
dev-log/Rust
컴파운드 타입(compound type)은 여러 개의 값을 하나의 타입으로 그룹화한 타입 러스트에선 두 가지의 컴파운드 타입을 지원 튜플(tuples) 배열(arrays) 변수의 타입 확인하기 컴파운드 타입에 대해 알아보기 전에, 컴파운드 타입이 어떻게 이루어졌는지 잘 살펴보기 위해 변수의 타입을 출력하는 함수를 만들어 놓자. (학습용 및 디버깅 목적) // main.rs /** 변수의 타입을 출력하는 함수 */ fn print_type_of(_: &T) { println!("{}", std::any::type_name::()); } *참고: https://stackoverflow.com/questions/21747136/how-do-i-print-the-type-of-a-variable 튜플 타입 고정..
[일반 프로그래밍 개념] 데이터 타입 - 1. 스칼라 타입
2022. 5. 24. 00:34
dev-log/Rust
러스트는 정적 타입 언어 정적 타입 언어: 컴파일 시점에 모든 변수의 타입이 결정되어야 함. 동적 타입 언어: 런타임에 자료형이 동적으로 결정됨. 데이터 타입의 두 가지 부분집합 스칼라(Scalar) 타입: 하나의 값을 표현 컴파운드(Compound) 타입: 하나의 타입으로 여러 개의 값을 그룹화한 타입 스칼라 타입 1. 정수(integer) 2. 부동 소수점 숫자(floating point numbers) 3. 불리언(boolean) 4. 문자(characters) 정수(integer) 소수점 없는 숫자 정수 타입 중 부호가 있는 것은 i로 시작하고, 부호가 없는 것은 u로 시작 예: i16 / u32 부호가 있고 없고의 차이는 음수를 저장할 수 있는지 아닌지의 차이 러스트의 각 정수 타입에는 크기가 ..
[일반 프로그래밍 개념] 변수
2022. 5. 23. 00:18
dev-log/Rust
러스트에서 변수는 기본적으로 변경이 불가능 러스트는 불변성을 기본으로 하기 때문 필요한 경우에는 변경 가능한 변수로 선언할 수 있음. 예제 fn main() { let x = 5; println!("x의 값: {}", x); } 터미널에서 cargo run을 실행하면, x의 값: 5이라고 정상적으로 출력된다. fn main() { let x = 5; println!("x의 값: {}", x); x = 6; println!("변경된 x의 값: {}", x); } 터미널에서 cargo run을 실행하면, 다음과 같은 에러 메시지와 함께 컴파일을 할 수 없다는 컴파일러 에러가 발생한다. 러스트는 컴파일러 차원에서 이와 같이 친절하게 에러의 원인과 해결을 위한 도움말까지 제공해준다. error[E0384]: 불..
macOS에서 rust-analyzer 세팅
2022. 5. 22. 12:30
dev-log/Rust
2022.01.28 - [dev-log/Rust] - rustfmt와 RLS, rust-analyzer rustfmt와 RLS, rust-analyzer rustfmt rustfmt는 러스트의 formatting 도구로, 이를 이용하여 일정한 스타일로 코드를 작성할 수 있음. 설치하기 $ rustup component add rustfmt 러스트 파일에 대해 rustfmt 실행하기 $ rustfmt main.rs.. ahnanne.tistory.com ⬆ 오토 포맷팅을 위해 사용할 수 있는 툴인 rust-analyzer의 설치 및 사용 방법에 대해 포스팅한 적이 있다. 최근에 구입한 맥북으로 러스트 공부를 하기 위해 러스트 설치도 하고, 작성해두었던 위 포스팅을 참고하여 rust-analyzer도 설..
[숫자 맞히기 게임 만들기] 정답 맞힐 때까지 다중 입력 지원하기 + 올바르지 않은 입력 처리하기
2022. 3. 9. 15:06
dev-log/Rust
사용자가 정답을 맞힐 때까지 재도전(!) 할 수 있또록 다중 입력 기능을 추가해보자. 무한 반복을 실행하는 loop 키워드를 사용하여 다음과 같이 입력 안내 멘트부터 match 표현식까지를 반복문 안으로 옮기자. use rand::Rng; use std::cmp::Ordering; use std::io; fn main() { println!("숫자를 맞혀봅시다!"); let secret_number = rand::thread_rng().gen_range(1..101); println!("사용자가 맞혀야 할 숫자: {}", secret_number); // TODO: 테스트 후 제거할 코드 loop { println!("정답이라고 생각하는 숫자를 입력하세요."); let mut guess = String:..
[숫자 맞히기 게임 만들기] 난수와 사용자 입력 비교하기
2022. 2. 15. 23:13
dev-log/Rust
이전 시간에 rand 크레이트를 이용하여 생성한 난수와, 사용자가 입력한 값을 비교하고 비교 결과에 대해 출력하는 코드를 작성해보자. 먼저, 이전까지 작성해둔 코드에 표준 라이브러리로부터 std::cmp::Ordering 타입을 가져오고, match 표현식을 추가해준다. use rand::Rng; use std::cmp::Ordering; use std::io; fn main() { println!("숫자를 맞혀봅시다!"); let secret_number = rand::thread_rng().gen_range(1..101); println!("사용자가 맞혀야 할 숫자: {}", secret_number); // TODO: 테스트 후 제거할 코드 println!("정답이라고 생각하는 숫자를 입력하세요."..
[숫자 맞히기 게임 만들기] 난수 만들기
2022. 2. 5. 15:09
dev-log/Rust
숫자 맞히기 게임의 규칙은 다음과 같다. 프로그램이 1부터 100 사이의 임의의 숫자를 생성하면 플레이어는 본인이 생각하는 정답을 입력한다. 입력에 대한 처리를 위한 코드를 저번 시간에 작성했으니 이번 시간에는 임의의 숫자를 생성하는 코드를 작성해보자. 2022.02.01 - [dev-log/Rust] - [숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기 [숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기 코드 작성하기 일반적인 개념을 파악하기 위해 문서 2장의 안내에 따라 간단한 숫자 맞히기 게임을 만들어 볼 예정이다. 숫자 맞히기 게임의 동작 원리는 다음과 같다. 1~100 사이의 임의의 정수 ahnanne.tistory.com 크레이트(crate) 추가하기 러스트 표준 라이브러리에서..
[숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기
2022. 2. 1. 17:54
dev-log/Rust
코드 작성하기 일반적인 개념을 파악하기 위해 문서 2장의 안내에 따라 간단한 숫자 맞히기 게임을 만들어 볼 예정이다. 숫자 맞히기 게임의 동작 원리는 다음과 같다. 1~100 사이의 임의의 정수를 생성한다. 플레이어에게 이 값이 무엇일지 예측해보라고 하고 그 예측값을 입력 받는다. 플레이어에게 입력 받은 예측값과 기준값(생성된 난수)을 비교하여, 입력값이 기준값보다 큰지 작은지를 알려준다. 예측값과 기준값이 일치하면 프로그램은 축하 메시지를 출력하고 종료한다. 우선 cargo를 이용하여 새 프로젝트를 생성하고, 해당 디렉터리로 이동한다. $ cargo new guessing_game && cd guessing_game 난수를 생성하는 로직을 작성하기 전에, 플레이어에게 입력할 값을 묻고 이 입력값을 처..