Primitives, 원시타입
러스트 언어는 타입 지정이 우선시 되어야 한다. 항상 이를 염두하자.
Scalar Types
-
signed integers:
i8
,i16
,i32
,i64
,i128
andisize
(pointer size) -
unsigned integers:
u8
,u16
,u32
,u64
,u128
anduisze
(pointer size) -
floating point:
f32
,f64
-
char
Unicode 인'a'
,'α'
and'∞'
(4 bytes each) -
bool
eithertrue
orfalse
-
and unit type
()
, empty typle 이라고 하는데 아래에서 알아보자.
튜플 타입 임에도 불구하고 컴파운드 타입으로 고려되지 않는 것은 하나의 타입으로 지정되어 있기 때문이다.
Compound Types
-
arrays like
[1,2,3]
-
tuples like
(1, true)
타입 지정할 때 숫자는 suffix 로 지정할 수 있다. 숫자는 default 타입이 존재하는데 Int 는 i32, float는 f64 가 있다. 또한 러스트는 타입 infer 시스템을 가지고 있다.
fn main() { let _logical: bool = true; let _a_float: f64 = 1.0; // Regular annotation let _suffix_integer = 3i32; // Suffix annotation i32 let _default_float = 3.0; // default f64 let _default_integer = 7; // default i32 //주석을 풀면 에러남. //println!("{default_integer}"); // 러스트는 기본적으로 변수가 immutable 이기 때문에 mut 를 변수 앞에 선언할 수 있다. let mut can_change = "나는 예전엔 어리석었다.".to_string(); println!("{can_change}"); can_change = "현재는 무지에서 벗어났다".to_string(); println!("{can_change}"); //아래 코드는 주석을 풀면 에러가 난다. 같은 타입에서만 변화만 가능하다. //사람이 제 아무리 노력해서 변화한다 한들 다람쥐나 고래가 될 수 없듯이 //can_change = 3; }
Tuples
튜플 타입은 () 으로 지정한다. (type1, type2, type3...) 과 같은 방식으로 선언할 수 있다.
fn reverse_tuple( pair : (i32, bool) ) -> (bool, i32) { let (reverse_bool, reverse_i32) = pair; i32, bool (reverse_i32, reverse_bool) } fn main() { let t = (33, true); (i32, bool) let result_t = reverse_tuple(t); (bool, i32) println!("{:?}", result_t); }