rust
구조체 (Struct)
이번 글에서는 구조체에 대해서 다루려고 한다. Rust에서 구조체(struct)는 여러 Type의 데이터를 묶어서 의미있는 단위로 사용할 수 있도록 한다. 객체 지향적 프로그래밍 언어인 Python, Java의 Class와 유사하다고 생각 될 수 있으나 rust의 구조체는 언어 디자인 철학에 의하여 상속 대신에 trait을 이용한다. 이는 추후에 자세히 다룰 예정이다. 구조체 정의 rust에서는 struct 키워드를 이용하여 구조체를 정의할 수 있다. 아래와 같이 구조체의 이름을 명시하고 중괄호안에 원하는 필드명과 그 타입을 명시해 주면 구조체가 정의된다. struct User { username: String, email: String, sign_in_count: u64, active: bool, } ..
Rust 기초 - 소유권(2)
이번 글에서는 소유권의 참조자에 대해서 알아보자 앞선 글에서 우선 앞서 이야기 한것처럼 기본적으로 Rust에서는 함수에 인자로 변수를 넣어주게 되는경우 소유권이 넘어가게 되고, 호출한 함수가 끝나면서 자동적으로 메모리에서 해제되게된다. 하지만 우리는 이 변수를 계속해서 쓰고싶을 경우도 존재하기에 소유권을 돌려주기위해 일일히 반환하기위해 명시하는것은 너무 귀찮은 일이다. 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 le..
Rust 기초 - 소유권(1)
원래는 함수와 같이 진행하려고 했으나 Rust에서 소유권이 중요한 개념이라 따로 분리해서 진행합니다. 소유권(Ownership)이란? 소유권은 Rust에서 메모리 관리를 하는 매우 중요한 핵심기능이다. 다른 프로그래밍 언어에서는 garbage collector가 백그라운드에서 끊임없이 작동하거나, 자동적인 메모리 관리 기능이 없어서 프로그래머가 명시적으로 관리해주어야 한다. Rust에서는 메모리 관리의 몇가지 규칙으로 이루어진 소유권 시스템을 통하여 메모리를 관리한다. 이 소유권을 통하여 동작하는 기능들은 런타임 비용이 발생하지 않는다. 스택(Stack)과 힙(Heap) 소유권에 대해 이야기 하기전에 우선 메모리에 관하여 이야기 해보자. 컴퓨터의 운영체제(OS)에서는 프로그램의 실행을 위하여 다양한 메모..
Rust 기초 - 함수
Functions Rust에서 함수는 fn 을 사용하여 정의 할 수 있다. rust 작성 규칙에 따라 모든 함수는 snake case 형식으로 작성한다. fn main() { println!("Hello, world!"); another_function(); } fn another_function() { println!("Another function."); } 다른 언어와 같이 함수에 parameter를 가지는 형식으로 선언하는것 또한 가능하다. 모든 parameter는 반드시 type이 정의되어 있어야 한다. fn main() { another_function(5, 6); } fn another_function(x: i32, y: i32) { println!("The value of x is: {}"..
Rust 기초 - 변수
러스트 공식 안내서를 보고 진행하는 Rust 기초 Rust 공식 안내서 : https://rinthel.github.io/rust-lang-book-ko/foreword.html Rust의 변수 Rust에서는 다음과 같이 변수를 정의할 수 있다. 선언 식별자는 let 하나로 되어있으며, 변수의 type은 Rust 컴파일링 과정에서 자동으로 추정하거나, 직접 선언해 줄 수 있다. Rust에서 let을 사용할 경우 지역변수로 선언만 가능하다. let x = 5; Rust에서 변수는 기본적으로 불변성을 가지고 있는다. 이러한 이유로 변수가 한번 bound되면 해당 값을 변경할 수 없다. fn main() { let x = 5; println!("The value of x is: {}", x); x = 6; /..