728x90
출력 형식
o: 8진수
x: 소문자 16진수
X: 대문자 16진수
p: 포인터
b: 2진수
e: 소문자 지수 표기
E: 대문자 지수 표기
?: 디버깅 목적으로 사용
u: unsigned integer
타입선언
let n: i32;
전역 변수
static MAX_SIZE: i32 = 32;
static MAX_NAME: &'static str = "HELLO WORLD";
fn main() {
println!("{}", MAX_NAME);
}
변경 가능한 변수
기본적으로 rust는 변수를 변경 할 수 없다. mut을 선언해주어야 가능하다.
let mut fuel = 34;
fuel = 60;
변수의 scope
기존 C++, JAVA등과 크게 차이가 없어 보인다. 외부 블록의 변수를 내부 블록에서 사용 할 수 있지만, 내부 블록의 변수는 블록이 끝나면 메모리에서 해제된다.
let outer = 42;
{
let inner = 3.14;
println!("block variable: {}", inner);
let outer = 99;
println!("block variable outer: {}", outer);
} // outer 99는 메모리에서 사라지고 42가 반환됨.
println!("outer variable: {}", outer);
String operation
let player1 = "Rob";
let player2 = "Jane";
let player3 = player1 + player2; // 에러발생
let player4 = format!("{} {}", player1, player2);
타입 Cast
다른 언어와는 다르게 interger, floating point간의 덧셈이 안되어 casting 후 진행해주어야 한다.
let points = 10i32; // int형 숫자 10
let mut saved_points: u32 = 0;
saved_points = points as u32;
let points = 10i32;
let f2 = 3.14;
let saved_points = points as f2 + f2;
에일리어싱
C/C++ typedef과 비슷하다
type MagicPower = u16;
fn main() {
let run: MagicPower = 7800;
}
표현식
러스트는 코드 대부분이 표현식이라는 표현 지향적인 언어이다.
let a = 2; // a는 2를 바인딩한다.
let b = 5; // b는 5를 바인딩한다.
let n = a + b; // n은 7을 바인딩한다.
let mut a = 5;
let mut b = 6;
let n = 7;
a = b = n; // 불가능
let mut n = 0;
let mut n = 1;
let t = m; m = n; n = t; // 가능
println!("{} {} {}", n, m, t); // 1 0 1을 출력한다.
let n1 = {
let a = 2;
let b = 5;
a + b
};
println!("n1 is: {}", n1);
let n2 = {
let a = 2;
let b = 5;
a + b; // ; 이 있으면 반환 값을 무시하여 아무런 값도 반환하지 않는다.
};
println!("n2 is: {:?}", n2);
포인터
C/C++과 같이 포인터 개념이 존재한다.
let tricks = 10;
let reftricks = &mut tricks
let mut score = 0;
let score2 = &score;
*score2 = 5; // error : 바꿀수 없음
let mut score = 0;
let score3 = &mut score;
*score3 = 5; // 변경가능
let socre4 = &mut score; // error : 변수하나당 참조자는 한개씩만 가능
728x90
'Language > Rust' 카테고리의 다른 글
고차원 함수와 매개변수화를 통한 코드 일반화 (0) | 2021.10.09 |
---|---|
패턴매칭 (0) | 2021.10.08 |
데이터 구조화 (0) | 2021.10.06 |
함수와 제어문 (0) | 2021.10.06 |
Rust의 장점 및 특징 (0) | 2021.10.04 |
댓글