본문 바로가기

rust10

Rust 의 소유권(ownership)이란? Rust 언어의 소유권 시스템은 메모리 안전성과 동시성을 보장하기 위해 설계된 고유한 기능입니다. 이 시스템은 Rust 코드에서 객체의 소유권을 추적하여 런타임 오류인 "null pointer dereference"와 "dangling pointer"같은 일반적인 메모리 오류를 방지합니다. Rust에서 모든 객체는 변수에 바인딩되어 있으며, 각 변수는 그 객체의 소유자입니다. 이렇게 소유권이 지정된 객체는 다른 스코프로 전달될 때 소유권이 이전됩니다. 이를 "move"라고 부릅니다. 이렇게 소유권을 이전함으로써 객체의 수명을 추적하고, 객체에 대한 메모리 할당과 해제를 자동으로 처리할 수 있습니다. 또한, Rust에서는 불변 참조와 가변 참조를 구분합니다. 불변 참조는 객체의 소유권을 넘기지 않고도 객체.. 2023. 3. 13.
Rust 의 type : Some 에 대해.. Rust 언어에서 Some은 Option 열거형의 한 가지 값으로, 값이 있음을 나타냅니다. Option 열거형은 Rust에서 값이 있을 수도 있고 없을 수도 있는 값을 나타낼 때 사용됩니다. Some 값은 다른 값으로 래핑됩니다. 예를 들어, Some(5)는 5라는 값이 있음을 나타내며, Some("hello")는 문자열 "hello"가 있음을 나타냅니다. Some은 보통 패턴 매칭과 함께 사용됩니다. 예를 들어, 다음은 Option 열거형에서 Some 값을 추출하는 방법입니다: let x: Option = Some(5); match x { Some(n) => println!("The value of x is {}", n), None => println!("x is not set"), } 위 코드는 x.. 2023. 3. 10.
maturin, PyO3 - Rust 를 Python 에서 사용하자 Maturin 은 Rust 기반 Python 패키지를 구축하고 게시하는 도구이다 PyO3는 Python에서 rust코드를 실행할 수 있고, 반대로 rust에서 python 코드를 실행할 수 있게 도와주는 crate이다 // python 가상환경 활성화하고, 가상환경에 maturin 설치 $ pip install maturin $ mkdir temp & cd temp // rust project 시작, 위에서 만든 temp로 이름이 지정된다. $ maturin init -b pyo3 // 아래 파일들이 생성된다. rust 파일은 src/lib.rs // Cargo.toml, pyproject.toml 의 name을 변경하면 패키지 명을 변경할 수 있다 $ ls Cargo.toml pyproject.toml.. 2023. 3. 9.
Rust 시작하기 책읽고, 공부하기 보다 먼저, rust 설치 / 환경셋팅하기 $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh // 프로젝트 폴더 만들기 $ mkdir temp & cd temp // 초기화 $ cargo init & ls // cargo 환경 활성화 $ . ~/.cargo/env // 프로젝트 생성 $ cargo new rust_test // 빌드 $ cargo build // 릴리즈 모드로 빌드 $ cargo build --release // 실행 $ cargo run // 포멧터 $ cargo fmt // docs html 문서화 - 브라우저 open $ cargo doc --open 2023. 3. 8.