본문 바로가기
728x90
반응형

전체 글248

Rust 설치부터 실행까지 (use, pub use, as, mod) - 16 오늘은 Rust의 use, as, mod에 대해 알아보고자 합니다.use 키워드로 경로를 스코프 안으로 가져오기함수 호출을 위해서 경로를 작성하는 것은 불편하고 반복적인 느낌을 줄 수 있습니다. use 키워드를 한번 사용하여 어떤 경로의 단축여로(shortcut)을 만들 수 있고, 그러면 스코프 안쪽 어디서라도 짧은 이름을 사용할 수 있습니다. 다음 예제는 crate::front_of_house::hosting 모듈을 eat_at_restaurant 함수가 존재하는 스코프로 가져와, eat_at_restaurant 함수 내에서 add_to_waitlist 함수를 hosting:;add_to_waitlist경로만으로 호출하는 예제입니다.mod front_of_house { pub mod hosting.. 2025. 1. 15.
Rust 설치부터 실행까지 (crate, 절대 경로, 상대 경로, super, use, pub) - 15 오늘은 Rust의 crate, super, pub에 대해 알아보고자 합니다.패키지와 크레이트크레이트(crate)는 rust가 컴파일 한 차례에 고려하는 가장 작은 코드 단위입니다. cargo 대신 rustc를 실행하여 단일 소스 코드 파일을 넘겨주더라도, 컴파일러는 그 파일이 크레이트라고 생각합니다. 크레이트는 바이너리일 수도 있고, 라이브러리일 수도 있습니다. 바이너리 크레이트(binary crate)는 커맨드 라인 프로그램이나 서버처럼 실행 가능한 실행파일로 컴파일할 수 있는 프로그램입니다. 바이너리 크레이트는 실행파일이 실행되면 무슨 일이 일어나는지를 정의한 main 함수를 포함하고 있어야 합니다. 라이브러리 크레이트(library crate)는 main 함수를 가지고 있지 않고 실행파일 형태로 컴.. 2025. 1. 13.
Rust 설치부터 실행까지 (match, if let) - 14 오늘은 Rust의 match, if let에 대해 알아보고자 합니다.match 제어 흐름 구조rust는 match라고 불리는 매우 강력한 제어 흐름 연산자를 가지고 있는데, 일련의 패턴에 대해 어떤 값을 비교한 뒤 어떤 패턴에 매칭되었는지를 바탕으로 코드를 수행하도록 해줍니다. 패턴은 리터럴 값, 변수명, 와일드카드 등 다양한 것으로 구성될 수 있습니다. match의 힘은 패턴의 표현성으로부터 오며 컴파일러는 모두 가능한 경우가 처리되는지 검사합니다.enum Coin { Penny, Nickel, Dime, Quarter,}fn value_in_cents(coin: Coin) -> u8 { match coin { Coin::Penny => 1, Coin.. 2025. 1. 12.
Rust 설치부터 실행까지 (열거형, Option) - 13 오늘은 Rust의 열거형(enumerations)에 대해 알아보고자 합니다.열거형열거형은 하나의 타입이 가질 수 있는 베리언트(variant)들을 열거함으로써 타입을 정의할 수 있도록 합니다. IP 주소의 경우 v4나 v6 중 하나면 될 수 있는데, 이러한 특성은 열거형 자료 구조에 적합합니다. v4,v6는 근본적으로 IP 주소이기 때문에, 이 둘은 코드에서 모든 종류의 IP 주소에 적용되는 상황을 다룰 때 동일한 타입으로 처리되는 것이 좋습니다.enum IpAddrKind { V4, V6,}열거형 값위에 선언한 IpAddrKind의 두 개의 배리언트에 대한 인스턴스를 다음과 같이 만들 수 있습니다. let four = IpAddrKind::V4; let six = IpAddrKin.. 2025. 1. 12.
Rust 설치부터 실행까지 (메서드) - 12 오늘은 Rust의 메서드(method)에 대해 알아보고자 합니다.메서드 문법메서드(method)는 함수와 유사합니다. fn 키워드와 함수명으로 선언하고, 매개변수와 반환값을 가지며, 다른 어딘가로부터 호출될 때 실행되지만, 함수와 달리 구조체 컨텍스트에 정의되고, 첫 번째 매개변수가 항상 self라는 차이점이 있습니다.메서드 정의하기#[derive(Debug)]struct Rectangle { width: u32, height: u32,}impl Rectangle { fn area(&self) -> u32 { self.width * self.height }}fn main() { let rect1 = Rectangle { width: 30, .. 2025. 1. 9.
Rust 설치부터 실행까지 (구조체, 디버깅) - 11 오늘은 Rust의 구조체(struct)에 대해 알아보고자 합니다.구조체구조체는 여러 개의 연관된 값을 가질 수 있다는 측면에서 볼 때 튜플 타입절에서 살펴본 튜플과 비슷합니다.일반적인 C언어의 구조체를 생각하시면 편합니다.구조체의 구성 요소들은 각각 다른 타입이 될 수 있고, 각각의 구성 요소에 이름을 붙일 수 있어 각 요소가 더 명확한 의미를 가지게 되고, 특정 요소에 접근할 때 순서에 의존할 필요가 사라지게 되어, 튜플보다 유연하게 사용할 수 있습니다.구조체를 정의하려면 struct 키워드와 해당 구조체에 지어줄 이름을 입력합니다.구조체의 중괄호 안에서는 필드(field)라고 부르는 각 구성 요소의 이름 및 타입을 정의합니다.struct User { active: bool, username.. 2025. 1. 7.
Rust 설치부터 실행까지 (슬라이스) - 10 오늘은 Rust의 슬라이스(slice)에 대해 알아보고자 합니다.슬라이스슬라이스(slice)는 컬렉션(collection)을 통째로 참조하는 것이 아닌, 컬렉션의 연속된 일련의 요소를 참조하도록 해줍니다. 슬라이스는 참조자의 일종으로서 소요권을 갖지 않습니다. 만약 단어의 공백 부분의 index를 출력하는 함수를 작성하게 된다면 다음과 같이 작성이 가능합니다.fn first_word(s: &String) -> usize { let bytes = s.as_bytes(); for (i, &item) in bytes.iter().enumerate() { if item == b' ' { return i; } } s.len()}String을 하나하.. 2025. 1. 6.
Rust 설치부터 실행까지 (참조자) - 9 오늘은 Rust의 참조자(reference)에 대해 알아보고자 합니다.참조와 대여fn main() { let s1 = String::from("hello"); let (s2, len) = calculate_length(s1); println!("The length of '{}' is {}.", s2, len);}fn calculate_length(s: String) -> (String, usize) { let length = s.len(); // len()은 String의 길이를 반환합니다 (s, length)}이전 예제에서 String이 calculate_length로 이동되어서, calculate_length를 호출한 함수에서 String도 반환하여, 함수 호출 이후에도 S.. 2025. 1. 5.
Rust 설치부터 실행까지 (소유권) - 8 오늘은 Rust의 소유권에 대해 알아보고자 합니다.소유권소유권(ownershipt)는 rust에서 가장 독특한 기능이며, 언어 전반에 깊은 영향을 끼칩니다. 소유권은 가비지 컬렉터(GC : Garbage Collector)없이 메모리 안전성을 보장하도록 해주므로, 소유권이 어떻게 동작하는지를 이해하는 것은 중요합니다. 몇몇 언어(JAVA, Golang 등)는 가비지 컬렉션으로 프로그램에서 더 이상 사용하지 않는 메모리르 정기적으로 찾는 방법을 채택했고, 다른 언어(C, C++ 등)는 프로그래머가 직접 명시적으로 메모리를 할당하고 해제하는 방식을 채택했습니다. rust는 소유권(ownership)이라는 시스템을 만들고, 컴파일러가 컴파일 중에 검사할 여러 규칙을 정해 메모릴 관리하는 방식을 채택했습니다. .. 2025. 1. 2.
728x90
반응형