학습 내용/Rust12 [일반 프로그래밍 개념] 데이터 타입 - 2. 컴파운드 타입 컴파운드 타입(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 튜플 타입 고정.. 2022. 5. 29. [일반 프로그래밍 개념] 데이터 타입 - 1. 스칼라 타입 러스트는 정적 타입 언어 정적 타입 언어: 컴파일 시점에 모든 변수의 타입이 결정되어야 함. 동적 타입 언어: 런타임에 자료형이 동적으로 결정됨. 데이터 타입의 두 가지 부분집합 스칼라(Scalar) 타입: 하나의 값을 표현 컴파운드(Compound) 타입: 하나의 타입으로 여러 개의 값을 그룹화한 타입 스칼라 타입 1. 정수(integer) 2. 부동 소수점 숫자(floating point numbers) 3. 불리언(boolean) 4. 문자(characters) 정수(integer) 소수점 없는 숫자 정수 타입 중 부호가 있는 것은 i로 시작하고, 부호가 없는 것은 u로 시작 예: i16 / u32 부호가 있고 없고의 차이는 음수를 저장할 수 있는지 아닌지의 차이 러스트의 각 정수 타입에는 크기가 .. 2022. 5. 24. [일반 프로그래밍 개념] 변수 러스트에서 변수는 기본적으로 변경이 불가능 러스트는 불변성을 기본으로 하기 때문 필요한 경우에는 변경 가능한 변수로 선언할 수 있음. 예제 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]: 불.. 2022. 5. 23. macOS에서 rust-analyzer 세팅 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. 5. 22. [숫자 맞히기 게임 만들기] 정답 맞힐 때까지 다중 입력 지원하기 + 올바르지 않은 입력 처리하기 사용자가 정답을 맞힐 때까지 재도전(!) 할 수 있또록 다중 입력 기능을 추가해보자. 무한 반복을 실행하는 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. 3. 9. [숫자 맞히기 게임 만들기] 난수와 사용자 입력 비교하기 이전 시간에 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. 15. 이전 1 2 다음