• 러스트는 정적 타입 언어
    • 정적 타입 언어: 컴파일 시점에 모든 변수의 타입이 결정되어야 함.
    • 동적 타입 언어: 런타임에 자료형이 동적으로 결정됨.
  • 데이터 타입의 두 가지 부분집합
    • 스칼라(Scalar) 타입: 하나의 값을 표현
    • 컴파운드(Compound) 타입: 하나의 타입으로 여러 개의 값그룹화한 타입

 

스칼라 타입

1. 정수(integer)

2. 부동 소수점 숫자(floating point numbers)

3. 불리언(boolean)

4. 문자(characters)

 

정수(integer)

  • 소수점 없는 숫자
  • 정수 타입 중 부호가 있는 것은 i로 시작하고, 부호가 없는 것은 u로 시작
    • 예: i16 / u32
    • 부호가 있고 없고의 차이는 음수를 저장할 수 있는지 아닌지의 차이
  • 러스트의 각 정수 타입에는 크기가 정해져 있음.
크기 부호 있음 부호 없음
8bit i8 u8
16bit i16 u16
32bit i32 u32
64bit i64 u64
arch isize usize
  • 부호 있으면 다음 두 값 사이의 값들을 보관할 수 있음.

  • 부호 없으면 다음 두 값 사이의 값들을 보관할 수 있음.

  • isize, usize는 프로그램 실행 중인 컴퓨터의 아키텍쳐 환경에 따라 크기가 달라지며, 컬렉션 타입의 인덱스를 참조할 때 주로 사용함.
  • 정수 기본 타입은 i32로, 일반적으로 가장 빠름.

 

부동 소수점 타입(floating point numbers)

  • 러스트에는 소수점 가진 숫자를 처리하는 다음의 두 가지 타입의 부동 소수점 타입이 있음. (부동 소수점 숫자는 IEEE754 표준에 따라 표현)
    • f32 (32bit 크기) : 단정도(single-precision) 부동 소수점
    • f64 (64bit 크기) : 배정도(double-precision) 부동 소수점
  • 러스트는 이 중 f64를 기본 타입으로 규정
    • 대부분의 CPU에선 f64가 빠르면서도 정확도도 더 높다고 함.
    • 소수점 가진 숫자 처리할 때 따로 타입 명시하지 않으면 기본적으로 f64 타입으로 추론됨.
fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
    println!("{} {}", x, y);
}

 

사칙 연산

  • 러스트는 모든 숫자 타입에 대해 기본적인 사칙연산 지원
fn main() {
    /* 사칙 연산 */
    let sum = 1 + 1;
    println!("1 더하기 1은? = {}", sum); // 2

    let diff = 352.2 - 17.7;
    println!("{}", diff); // 334.5

    // let product = 2 * 2.3;
    // cannot multiply `{integer}` by `{float}` - rustc(E0277)
    let product = 2.0 * 2.3;
    println!("{}", product); // 4.6

    let remainder = 20 % 3;
    println!("{}", remainder); // 2
}

 

불리언 타입(boolean)

  • bool 키워드를 이용하여 불리언  타입 선언
  • true, false
  • 1byte 크기

 

문자 타입(characters)

유니코드 및 char 타입 관련 흥미로운 글... (러스트 뿐만 아니라 프로그래밍 언어 전반..)
http://www.itmoa.co.kr/gzboard.php?code=techqna&mode=gz_read&Page=6&no=194
fn main() {
    /* char 타입 */
    let mut example = 'a';
    println!("{} b c d e...", example); // a b c d e...
    example = '😻';
    println!("{}: 야옹~", example); // 😻: 야옹~
}
  • 러스트의 char 타입
    • 문자 하나를 표현
    • 4byte 크기 
    • 유니코드 스칼라값이라서 ASCII보다 많은 문자 표현 가능 (이모지까지 쌉가능)
    • U+0000부터 U+D7FF, U+E000부터 U+10FFFF까지의 값 포함
 

유니코드 0000~0FFF - 위키백과, 우리 모두의 백과사전

이 문서 안에는 일부 컴퓨터·브라우저에서 표시할 수 없는 문자가 있습니다. 그러므로 유니코드 글꼴이 있는 환경에서 보시는 것이 좋습니다. 다음은 U+0000에서 U+0FFF 안의 유니코드 문자 목록이

ko.wikipedia.org

  • 예제 코드에서 알 수 있듯이, 앞서 살펴본 문자열 리터럴은 큰따옴표("")로 표현하는 반면, char 리터럴은 작은따옴표('')로 표현함.

 


 

참고

https://rinthel.github.io/rust-lang-book-ko/ch03-00-common-programming-concepts.html

 

보편적인 프로그래밍 개념 - The Rust Programming Language

이번 챕터에서는 모든 프로그래밍 언어가 대부분 가진 개념이 Rust에서는 어떻게 다루어지는지 알아보고자 합니다. 많은 프로그래밍 언어가 보편적인 핵심요소를 갖습니다. 이번 챕터에서 Rust

rinthel.github.io

 

복사했습니다!