Rustacean & Pythonista
Khóa học
Đánh giá khóa học
- Lập trình Rust dễ nhất thế giới
- Lập trình Rust dễ nhất thế giới
Bài viết
Hỏi & Đáp
메모리 안전성에 대한 질문
하나의 메모리 주소에 대해서 단 하나의 접근자만 접근을 허용한다는 의미입니다. 예를 들어 하나의 값에 대해 여러 개의 포인터를 실제로 가지고 있더라도, 해당 메모리 주소에 접근하고 값을 읽고 수정하는 과정을 모두 atomic 하게 처리합니다. 물론 이는 어디까지나 safe 러스트의 이야기이고, unsafe 러스트로 들어가면 직접 메모리 주소에 접근하는 C 스타일 포인터처럼 사용도 가능합니다. 결론적으로 러스트에서 제공하는 문법과 도구들만 사용한다면 항상 원자적 연산이 보장된다고 이해하셔도 좋을 것 같습니다.
- 0
- 1
- 30
Hỏi & Đáp
러스트로 파이썬 패키지 만들기 실습을 해보면 에러가 발생합니다
안녕하세요, pyo3가 버전이 올라가면서 생긴 문제입니다. 먼저 lib.rs는 다음과 같이 수정하세요. use pyo3::prelude::*; fn _run(n: u64) -> u64 { match n { 0 => 0, 1 => 1, _ => _run(n - 1) + _run(n - 2), } } #[pyfunction] fn run(n: u64) -> PyResult { Ok(_run(n)) } /// A Python module implemented in Rust. #[pymodule] fn fibonacci(_py: Python, m: &Bound) -> PyResult { m.add_function(wrap_pyfunction!(run, m)?)?; Ok(()) }그리고 Cargo.toml 은 다음과 같습니다(피처만 추가하셔도 됩니다)[package] name = "fibonacci" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] name = "fibonacci" crate-type = ["cdylib"] [dependencies.pyo3] version = "0.23.3" features = ["extension-module"]이제 패키지가 잘 빌드되고 파이썬에서도 함수 호출이 정상적으로 기능합니다. Python 3.12.6 (main, Sep 15 2024, 11:07:06) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import fibonacci >>> fibonacci.run(3) 2 >>> fibonacci.run(3000)
- 1
- 1
- 99