Programming Language/Rust(19)
-
[Rust/러스트] 벡터 다루기
■ 벡터 벡터는 데이터량이 컴파일 타임에 결정되지 않아도 되며, 프로그램 실행 시 늘어나거나 줄어들 수 있기 때문에 힙에 저장됩니다. 또한 메모리 상에 서로 이웃하도록 모든 값을 단일 데이터 구조 안에 하나 이상의 값을 저장하도록 해줍니다. 벡터는 같은 타입의 값만을 저장할 수 있으며, 벡터는 스코프 밖으로 벗어날 시 해제됩니다. ◆ 벡터 생성 벡터를 생성하는 방법은 두 가지입니다. 첫번째, 제네릭을 통한 데이터 타입 설정과 Vec 구조체의 new 함수를 통한 벡터 생성 두번째, vec! 매크로를 통한 벡터 생성 fn main(){ // new 함수를 활용하여 벡터 생성 let v1 : Vec = Vec::new(); // vec! 매크로를 활용하여 벡터 생성 let v2 : Vec = vec![1,2,..
2022.02.21 -
[Rust/러스트] 패턴 매칭(match, if let) 정리
■ 패턴 매칭 패턴 매칭에는 match 연산자와 if let 문법이 있습니다. match 연산자는 다양한 조건을 처리할 때 주로 사용되며, if let 문법은 간결한 흐름을 통해 하나의 패턴만 매칭시키고 나머지는 무시하고 싶을 때 사용됩니다. ◆ match match는 리터럴 값, 변수명 등 다양한 패턴으로 구성될 수 있습니다. Java, Go 등에서 자주 사용되는 switch 문법과 유사한 기능을 제공합니다. match의 패턴은 조건이 될 수 있는 모든 항목을 정의해야 합니다. 만약 패턴 조건에서 무시해도 되는 항목에 경우 변경자(_)를 통해 일괄적으로 무시할 수 있습니다. 1) 반환값이 없는 match #[derive(Debug)] enum Gender{ Male, Female, } #[derive(..
2022.02.21 -
[Rust/러스트] 열거형(enum) 정리
■ 열거형 열거형은 하나의 타입이 가질 수 있는 값들을 다양하게 열거함으로써 타입을 정의할 수 있습니다. 열거형의 항목은 다양한 타입으로 설정할 수 있으며, 열거형은 구조체와 같이 메소드와 연관함수를 구현할 수 있습니다. ◆ 다양한 타입으로 설정 Info 열거형의 항목을 다양하게 String, u32, 구조체, 열거형으로 정의함으로써 열거형의 특징을 확인할 수 있습니다. #[derive(Debug)] enum Gender{ Male, Female, } #[derive(Debug)] enum Info{ // String 타입 Name(String), // u32 타입 Age(u32), // 구조체 Location{x : i32, y : i32}, // 열거형 Gender(Gender) } fn main()..
2022.02.20 -
[Rust/러스트] 구조체의 메소드, 연관함수
■ 구조체의 메소드 구조체의 메소드는 구조체의 impl 블록에서 정의해야 하며 메소드의 첫번째 파라미터는 self가 됩니다. 추가적으로 impl의 명은 구조체의 명과 동일해야 하며, 첫번째 파라미터 self는 메소드를 호출하는 인스턴스를 가르킵니다. struct Person{ name : String, age : u32, address : String, email : String, } // 구조체 구현 impl Person{ // 메소드 정의 fn show_person(&self) { println!("Name : {}", self.name); println!("Age : {}", self.age); println!("Address : {}", self.address); println!("Email : ..
2022.02.17 -
[Rust/러스트] 구조체(struct) 정리
■ 구조체 구조체는 튜플과 유사하게 구조체의 구성요소들을 각각 다른 타입으로 가질 수 있습니다. 튜플은 구성요소에 접근하기 위해 색인을 이용하지만, 구조체는 각 구성요소들을 명명함으로써 구성요소에 접근할 때 순서에 의존하지 않고 접근할 수 있습니다. ◆ 구조체 인스턴스 생성 Person 구조체를 정의하고 인스턴스를 생성하여 모든 구성요소를 출력합니다. 구조체가 구성요소에 접근할 때는 튜플과 동일하게 점(.)을 이용합니다. struct Person{ name : String, age : u32, address : String, email : String, } fn main(){ // 인스턴스 생성 let person = Person{ name : String::from("Hyunmin han"), age ..
2022.02.17 -
[Rust/러스트] 참조자(References)와 빌림(Borrowing)
■ 참조자와 빌림 참조자와 빌림은 해당 스코프에서 다른 로직으로 소유권을 넘기지 않고 참조자를 넘김으로써 소유권을 유지하고자 할 때 사용합니다. 여기에서 소유권이 생소하게 느껴질 수 있습니다. 러스트는 다른 프로그래밍 언어들과 비교하면 소유권이라는 특징으로 보다 효율적으로 메모리 관리가 가능합니다. 이러한 특징은 프로그래머의 메모리 관리를 통해 프로그램을 보다 효율적으로 관리 가능하게 합니다. * 소유권에 대한 자세한 내용은 링크를 참고해 주세요. ◆ 소유권의 이동 경로 확인 변수 s 의 소유권 이동경로는 아래와 같습니다. main 함수 take_ownership 함수 take_ownership 함수 로직이 종료되면서 s의 메모리도 해제 s의 소유권 이동 경로에서 알 수 있듯이 println!("main..
2022.02.17