본문 바로가기

Language/Rust7

일반화된 자료구조와 함수 다형성 일반적인 타입으로 매개변수 화 할 수 있어 여러 구체화된 정의를 갖을 수 있다. struct Pair { first: T, second: T }위의 코드 예제를 보면 T부분에 int, str 어떤 것이 와도 상관이 없다. 이를 제네릭 함수라고 부른다. let magic_pair: Pair = Pair { first: 7, second: 42 }; let pair_of_magicians: Pair = Pair { first: "Gandalf", second: "Sauron" };일반화 된 만큼 함수의 일반화도 중요하다. fn second(pair: Pair) { pair.second; // 2번째 인수를 꺼내는 함수 } let a = second(magic_pair); // 호출오류처리 스레드가 모.. 2021. 10. 10.
고차원 함수와 매개변수화를 통한 코드 일반화 고차원 함수와 클로저 고차원 함수 : 다른 함수를 매개변수로 받는 함수; 사이에 매개변수로 받을 함수의 타입을 적어야 한다. fn again i32 >(f: F, s: i32) -> i32 { f(f(s)) } // 고차원 함수 fn triples(s: i32) -> i32 { 3 * s } fn main() { let mut strength = 26; println!("My tripled strength equals {}", triples(strength)); // 26 println!("My strength is still {}", strength); // 26 strength = triples(strength); println!("My strength is now {}", strength);.. 2021. 10. 9.
패턴매칭 콘솔에서 입력 받기 입출력 기능 : std::io모듈을 통해 처리된다. 세상에서 가장 안전한 언어 답게 ok() // 정당하게 except() // 함수가 정확하게 작동하지 않았을 때 추가하여 사용해줘야만 한다. use std::io; fn main () { println!("What's your name. noble warrior?"); let mut buf = String::new(); io::stdin().read_line(&mut buf) .ok() .expect("Failed to read ljine"); println!("{}, that's a mighty name indeed!", buf.trim()); let input_num: Result = buf.trim().parse(); print.. 2021. 10. 8.
데이터 구조화 문자열 러스트는 두가지 유형의 문자열로 구성되어 있다. &str : 문자열 슬라이스 타입 ; 불변하며 고정된 크기를 갖는다. let magician1 = "Merlin"; let greeting = "Hello, !"; &'static str: 문자열이 정적으로 할당되었음을 의미 프로그램이 끝날 때까지 존재(정적 수명 - static lifetime - ) let magician2: &'static str = "Gandalf"; 동적 문자열 만드는 방법 &[..] : 리소스를 소모하지 않음 to_string() : 힙 메모리를 할당함 let mut str1 = String::new(); let mut str2 = String::with_capacity(25); let mut str3 = magician1.. 2021. 10. 6.
함수와 제어문 조건문 특별하게 다른건 없다 fn main () { let dead = false; let health = 48; if dead { println!("Game Over!"); return; } if dead { println!("Game Over!"); return; } else { println!("You still have a chance to win!"); } if health >= 50 { println!("Continue to fight!"); } else if health >= 20 { println!("Stop the battle and gain strength"); } else { println!("Hide and try ro recover!"); } }cpp와는 다르게 코드 블록으로 변수.. 2021. 10. 6.
변수 출력 형식 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등과 크게 차이가 없어 보인다. 외부 블록의 변수를 내부 블록에서 사용 할.. 2021. 10. 4.
Rust의 장점 및 특징 Rust의 장점 1. 강력한 타입 시스템을 통한 높은 안전성 제공 2. 저수준의 리소스들을 제어할 수 있기 때문에 하드웨어에 가깝게 실행 가능 Rust의 특징 : 안전성, 속도, 동시성 안전성 Rust에서 변수들의 입력은 컴파일이 되어 있기 때문에 정적이며 강력하다. 러스트의 컴파일러는 대부분 타입을 추론할 수 있기 때문에 모든 항목에 대해 타입을 표시하라고 강요하지 않는다. Rust의 컴파일러는 컴파일 동안 메모리 충돌, 누수 등,, 여러가지 문제를 감지 할 수 있다. 네이티브 코드를 컴파일한다. 동시성 동시성을 위한 매커니즘 중 하나로 얼랭에서 잘 알려진 액터 모델을 채택 스레드라고 부르는 경량 프로세스들이 병렬로 수행한다. 힙 메모리를 공유하지 않고 채널을 통해 데이터를 전달 2021. 10. 4.