Rust 의 스칼라 타입은 의도적으로 정밀해. 많은 언어가 흐릿한 '숫자' 하나를 주는 데 비해, Rust 는 정확히 뭘 뜻하는지 말하게 해 — 그 정밀함이 기능이야.
정수
정수는 부호 있음 (i8, i16, i32, i64, i128) 과 부호 없음 (u8 … u128) 으로 오고, 숫자가 비트 폭이야. isize/usize 도 있는데 기계의 포인터 폭에 맞춰져 — usize 가 컬렉션을 인덱싱할 때 쓰는 거야. 추론이 기댈 게 없을 때 기본값은 i32 야.
float, bool, char
f64 가 기본 float (완전한 배정밀도); 메모리 절반이 필요하면 f32. bool 은 true/false. char 는 완전한 유니코드 스칼라 — 4바이트라 ASCII 뿐 아니라 이모지나 한글 한 글자를 담아. C 의 1바이트 char 랑 진짜 다른 점이야.
오버플로는 정의된 동작이지 undefined 가 아니야
타입의 최댓값을 넘겨 더하면 Rust 는 명확한 답을 가져: debug 빌드는 panic (테스트에서 버그를 잡게), release 빌드는 wrap (2의 보수, 속도 위해). 둘 다 보안 구멍을 낳는 C 식 undefined behavior 가 아니야. 명시적 동작을 원하면 말해: wrapping_add, checked_add (Option 반환), saturating_add (최댓값에 clamp).
추론 더하기 표기
보통은 컴파일러가 타입을 추론하게 두지만, 중요할 땐 표기해: let big: u64 = 1; 이나 1u64 같은 접미사. 문자열을 숫자로 파싱할 땐 어느 숫자인지 말해야 해 — 스칼라를 표기하게 되는 제일 흔한 곳이야.