728x90 러스트3 소유권(Ownership) 소유권은 러스트가 gc없이 메모리 안정성 보장을 하게 해준다. 러스트에서 메모리는 컴파일 타임에 컴파일러가 체크할 규칙들로 구성된 소유권 시스템을 통해 관리된다. 소유권 기능들은 런타임 비용이 발생하지 않는다. 애플리케이션 실행 시 힙에 저장된 데이터에 접근하는 것은 스택에 저장된 데이터에 접근하는 것 보다 느리다. 스택 메모리는 top에 접근하면 되는 반면에 힙은 포인터가 가리키는 곳을 따라가야 하기 때문이다. 코드의 어느 부분이 힙의 어떤 데이터를 사용하는지 추적하는 것, 힙의 중복된 데이터의 양을 최소화 하는 것, 힙 내에 사용하지 않는 데이터를 제거하는 것이 소유권과 관련된 문제이다. 따라서 힙 데이터를 관리하는 것이 소유권 존재의 이유이다. 소유권 규칙 소유권은 다음과 같은 규칙을 가지고 있다... 2022. 1. 16. 기초 문법 변수, 상수 러스트의 기본 변수는 불변성이다. 이때문에 다음과 같은 코드를 컴파일하면 불변성 변수에 재할당으로 인해 에러가 발생한다. 1 2 3 4 5 6 7 fn main() { let x = 5; println!("The value of x is: {}", x); x = 6; println!("The value of x is: {}", x); } Colored by Color Scripter cs 변수와 상수의 차이 상수는 불변성 그 자체가. 따라서 mut를 허용하지 않는다. 또 한 let 대신 const를 사용해야 한며 값을 유형을 선언해야 한다. 또 한 상수는 사진이 선언되 있는 영역 냉에서 프로그램이 실행되는 시간 동안 항상 유효하다. shadowing mut로 선언한 변수가 아닌 경우 러스트는.. 2022. 1. 16. Rust 맛보기 Rust 설치 1 2 $ curl https://sh.rustup.rs -sSf | sh Colored by Color Scripter cs Rust 업데이트 1 2 $ rustup update cs Rust 설치 확인(버전 확인) 1 2 $ rustc --version cs Cargo 사용하기 Cargo는 러스트의 빌스 시스템, 패키지 매니저이다. Cargo를 사용해서 다음과 같이 프로젝트를 생성할 수 있다. 1 2 $ cargo new hello_cargo --bin cs 위 커맨드에서 --bin은 라이브러리가 아닌 실행 가능한 애플리케이션(binary)를 만든다는 의미이다. hello_cargo는 프로젝트 및 프로젝트 디렉토리 이름이다. Cargo는 의존성을 Cargo.toml에서 관리한다. 프로젝.. 2022. 1. 16. 이전 1 다음 728x90