자기개발하는 QA
Rust 02 본문
실행 프로그램 만들기
$ rustc <file>
// file OS에 맞는 실행가능한 파일
카고로 컴파일
$ cargo run
// -v : verbose 상세 출력 플래그
$ cargo build
// -release : optimized 릴리즈 빌드
변수정의 함수 호출
fn main() {
let a = 10; // ide에서 타입 추정한다. 타입 추정하려면 선언 하위에서 해당 변수를
// 사용해야 가능
let b: i32 = 20;
let c = 30i32;
let d = 30_i32;
let e = add(add(a, b), add(c, d)); // 각 함수로 컴파일되어 처리되므로 선언이 하단에 되어 가능
println!("( a + b ) + ( c + d ) = {}", e);
}
fn add(i: i32, j: i32) -> i32 {
i + j // 리턴 필요 없다
}
숫자
fn main() {
let twenty = 20; //<1>
let twenty_one: i32 = 21; //<2>
let twenty_two = 22i32; //<3>
let addition = twenty + twenty_one + twenty_two;
println!("{} + {} + {} = {}", twenty, twenty_one, twenty_two, addition);
let one_million: i64 = 1_000_000; //<4>
println!("{}", one_million.pow(2)); // 숫자가 메소드를 가지고 있다.
let forty_twos = [ //<6>
42.0, //<7>
42f32, //<8>
42.0_f32, //<9>
];
println!("{:02}", forty_twos[0]); //<10>
}
fn main() {
let three = 0b11; //<1>
let thirty = 0o36; //<2>
let three_hundred = 0x12C; //<3>
println!("base 10: {} {} {}", three, thirty, three_hundred);
println!("base 2: {:b} {:b} {:b}", three, thirty, three_hundred);
println!("base 8: {:o} {:o} {:o}", three, thirty, three_hundred);
println!("base 16: {:x} {:x} {:x}", three, thirty, three_hundred);
}
// template는 이렇게 쓰는건 알겠다.
// 그럼 :b 같은걸 인자나 연산으로 사용할수 있을까?
- TryInto 같은것으로 강제로 타입을 맞추어 쓸수 있다. 기준은 하위에 연산 비교등의 명령기준
- 부동소수점 연산 비교는 정밀도 필요한 경우 EPSILON을 사용
$ cargo install cargo-edit
// 의존성을 수동으로 추가 하지 않아도 관리해주는 도구
반복문
- while, for, loop, match
fn main() {
let mut ar = [1, 1, 2, 5, 14, 42, 132, 424];
for item in &mut ar {
*item = 10;
println!("{}", item)
}
}
// 반복문(array for)안에서 item 값을 변경하는 샘플 코드
참조
fn main() {
let a = 42;
let r = &a;
let b = a + *r;
println!("a + a = {}", b);
}
// 참조 역참조728x90