본문 바로가기

Rust

(25)
소유권 [1. 개요] 가비지 컬렉터 없이 메모리 안정성을 보장하게 해준다. 메모리는 컴파일 타임에 컴파이럴가 체크할 규칙들로 구성된 소유권 시스템을 통해 관리된다. 소유권 기능들의 그 어떤 것도 런타임 비용이 발생하지 않는다. 러스트 같은 시스템 프로그래밍 언어에서는 값이 스택에 있는지 힙에 있는지 여부가 언어의 동작 방식에 더 큰 영향을 준다. 스택은 데이터에 접근하는 방식때문에 빠르다. 새로운 데이터를 넣어두기 위한 혹은 데이터를 가져올 공간을 검색 할 필요가 없기 때문이며, 스택에 담긴 모든 데이터는 고정된 크기를 갖고 있다. 컴파일 타임에 크기가 결정되지 않거나, 변경될 수 있는 데이터는 힙에 저장된다. 힙 할당은 스택보다 복잡하여 스택보다 느리다. 따라서 코드의 어느 부분이 힙의 어떤 데이터를 사용하는..
함수와 제어문 [1. 개요] => fn 키워드는 새로운 함수의 선언을 가능하게 한다. => 모든 문자는 소문자를 사용하며, 밑줄 표시로 단어를 구분한다. => Rust 는 함수의 위치를 신경쓰지 않는다. 어딘가에 정의만 되어있으면 된다. [2. 함수 매개변수] argument(=전달인자) => 함수를 호출 할 때 각 함수로 넘기는 값 parameter(=매개변수) => 함수 선언 부에 선언 된 변수 [3. 구문과 표현식] 구문 => 어떤 명령들의 나열로 값을 반환하지 않는 동작을 수행 ~~~ 코드 표현식 => 결과 값을 산출 => 새로운 범위를 생성하는데 사용하는 block {} 은 표현식이다. ~~~ 코드 [4. 반환 값] return 키워드와 값을 써서 함수로부터 일찍 반환할 수 있지만, 대부분의 함수들은 암묵적으..
Rust 변수 [1. 개요] 1. Rust 언어에서 변수와 가변성등에 대해 정리한다. 2. 데이터 유형을 정리한다. [2. Rust 변수 개념] Rust 에서 기본 변수(let) 는 불변성(immutable)을 갖는다. => 특별한 취급(mut) 이 없는 한 변수의 값 변경은 불가능 하다. => const 변수 mut 를 통해 가변성 변수를 선언 할 수 있다. => non-const 변수 Rust 의 상수는 기본 변수와 약간 다르다. => mut 를 사용하는 것이 허용되지 않는다. => let 대신 const 를 사용한다. => 값의 유형을 선언해야 한다. => 보통 대문자로 명명한다(일종의 관습). Shadowing 이전에 선언한 변수와 같은 이름의 새 변수 선언 시 이전에 선언한 변수는 가리워 진다. => mut ..
Rust project 생성 [1. 개요] Rust 프로젝트 생성을 위한 cargo 에 대해서 정리한다. [2. cargo] Cargo 는 러스트의 빌드 시스템 및 패키지 매니저이다. Cargo 를 통해 코드를 빌드하고, 코드가 의존하고 있는 라이브러리를 다운로드하고, 그 라이브러리들을 빌드한다. [3. cargo new] cargo new 명령어를 통해 cargo package 를 만들 수 있다. ex) cargo new "your project name" --bin --bin : 프로젝트가 바이너리(실행파일)를 출력한다. --lib : 프로젝트가 라이브러리를 출력한다. 프로젝트 생성 시 다음과 같은 구조를 갖는다. myproject => .git/ => src/ => main.rs => target/ => Cargo.lock =..
Rust 개발환경 구축 [1. 개요] Windows 와 Linux 에서 Rust 개발환경 구축 방법을 기술한다. [2. Windows] 아래 웹사이트에 접속해서 운영체제에 맞는 버전으로 설치파일을 다운 받는다. https://www.rust-lang.org/en-US/install.html 다운받은 파일을 실행한다. rustup-init.exe Rustup metadata and toolchains will be installed into the Rustup home directory, located at: " ~~~ " This can be modified with the RUSTUP_HOME environment variable. The Cargo home directory is located at: " ~~~ " This..