본문 바로가기

Rust

[Rust] 포인터의 종류와 사용방법 Rust에서는 다양한 종류의 포인터를 제공합니다. 이 포인터들은 메모리 안전성, 소유권, 뮤터불리티 등 다양한 측면에서 사용됩니다. 아래에 주요 포인터 타입에 대한 설명을 제공하겠습니다. Rust에서는 여러 종류의 포인터를 제공합니다. 각각의 포인터는 메모리 안전성을 보장하는 데 다양한 방법을 사용합니다. 아래 테이블에서 주요 포인터 타입의 특징을 비교하겠습니다. 먼저 들어가기 전에 뮤터블과 (Mutable)과 이뮤터블(Immutable)의 간략히 짚고 갑니다. 아래는 비교한 표입니다. 뜻 변경 가능한 변경 불가능한 변수 선언 let mut x = 5; let x = 5; 값 변경 가능 (x = 6;) 불가능 배열/벡터 수정 가능 (vec.push(1);) 불가능 메모리 안정성 상대적으로 낮음 높음 데이.. 더보기
[Rust] Option<T> 의 사용방법에 대하여 Option 이 Option타입은 표준라이브러리에 enum으로 정의되어 있습니다. 러스트에는 기본적으로 다른언어에서 많이 사용하는 null 이 없습니다. 때문에 널포인터 참조와 같은 에러는 발생하지 않습니다. null값을 사용할때의 문제점은 값이 null인 데이터를 사용할때 문제가 발생합니다. 하지만, '값이 없음'을 표현하는 방법이 필요할 때가 있습니다. 그럴 때 Option 이라는 enum 타입을 사용할 수 있습니다. 이 Option 은 표준 라이브러리에 아래와 같이 정의되어 있습니다 enum Option { Some(T), None, } 여기서 T 는 제너릭을 나타냅니다. Some 은 값이 있음을 나타내며, None 은 값이 없음을 나타냅니다. 이 두 '상태' 를 가지고 null 체크와 같은 일을 .. 더보기
Rust in Jupyter notebook Jupyter Notebook에서 Rust를 사용하려면, jupyter의 커널설치가 필요합니다. Rust 커널 설치: Jupyter Notebook은 다양한 프로그래밍 언어를 지원하기 위해 별도의 커널을 사용합니다. Rust용 Jupyter 커널은 evcxr_jupyter라고 불리며, 이를 설치하면 Jupyter Notebook에서 직접 Rust 코드를 실행할 수 있습니다. 먼저, Rust가 설치되어 있어야 합니다. Rust 공식 웹사이트에서 Rust를 설치할 수 있습니다. Rust가 설치된 후, 터미널이나 커맨드 프롬프트에서 다음 명령어를 실행하여 evcxr_jupyter를 설치합니다: cargo install evcxr_jupyter evcxr_jupyter --install 설치가 완료되면, Jup.. 더보기
[Rust] Clap과 커맨드 라인 argument 다루기 Rust에서 command line을 다루는 법은 기본적으로 std::env::args가 있습니다. Clap은 Rust에서 커맨드 라인 인터페이스를 쉽게 만들 수 있도록 도와주는 크레이트입니다. 다양한 옵션과 설정을 통해 복잡한 커맨드 라인 애플리케이션도 쉽게 구축할 수 있습니다. std::env::args 사용 예제 먼저 기본적으로 내장되어 있는 std::env::args를 사용한 예제를 알아봅니다. 예제 1 Command 라인 인자를 하나씩 처리합니다. use std::env; fn main() { let args: Vec = env::args().collect(); if args.len() > 1 { if args[1] == "-c" || args[1] == "--config" { if args.l.. 더보기
[Rust] Cargo 간단한 사용법 Rust 패키지 관리자인 Cargo는 라이브러리 의존성 관리, 빌드, 테스트, 문서 생성 등 다양한 작업을 쉽게 할 수 있도록 도와줍니다. 이 글에서는 Cargo의 기본적인 사용법에 대해 정리해보겠습니다. 파이썬의 pip와 비슷하면서도 빌드, 테스트, 문서화까지 이 한 커맨드로 가능합니다. 기본 명령어 프로젝트 생성 명령어설명 Command Description cargo new 새로운 바이너리 프로젝트 생성 cargo new --lib 새로운 라이브러리 프로젝트 생성 빌드 및 실행 명령어설명 Command Description cargo build 프로젝트 빌드 cargo build --release 최적화된 릴리즈 빌드 cargo run 프로젝트 빌드 및 실행 cargo check 코드를 빌드하지 않.. 더보기
[RUST] xlsxwriter RUST에서 excel형식의 파일을 생성할때는 xlsxwriter를 이용해서 작성한다 여기는 이 예제를 설명한다. cargo-edit 설치되어 있지않으면 cargo-edit를 먼저 설치 한다. cargo install cargo-edit 아래와 같이 xlsxwriter를 라이브러리에 추가 한다. cargo add xlsxwriter cargo-add가 설치되어 있지 않으면 Cargo.toml 파일을 아래와 같이 직접 수정한다. [dependencies] xlsxwriter = "0.6.0" 아래와 같이 작성하고 컴파일을 진행한다. use xlsxwriter::*; fn main() -> Result { let workbook = Workbook::new("simple.xlsx")?; let mut wor.. 더보기
[Rust] 제어문 If-else, while, do-while if statement 제어문, if-else 류는 문들은 보통 모든 언어들에 있는 구문이고, 여기서는 rust가 다른 언어들과 조금 다른 점들만 기술합니다. if [conditions] ... // condition은 boolean식만 들어갈 수 있다. “? : ” 와 같은 삼항 연산자 역시 제대로 동작합니다 특이한 점은 condition에 괄호() 가 필요 없다는점입니다. if condition { ... } else { ... } Conditional loop(while) while같은 conditional loop도 동일합니다. 조건이 만족하면 loop가 실행되고, 아니면 빠져나가는것입니다. do-while은 rust에서는 지원하지 않습니다만, 이것을 구현하는 방법은 존재합니다. let mut i.. 더보기
[Rust] string과 str의 차이점은? Rust에는 문자열 타입이 두가지 존재합니다. 언어 자체에서 지원하는 str과 표준 라이브러리에서 지원하는 String입니다 let s1: &str = "Hello,this is str"; let s2: String = String::from("Hello, this is String"); str은 보통 &str로 많이 사용합니다. String과 &str의 가장 큰 차이점은 String은 문자열 수정이 가능하지만 &str은 read-only입니. &str은 보통 문자열 리터럴이나 문자열 슬라이스를 저장하는데 사용됩니다. String은 동적 heap 문자열의 Vec으로 구현이 되어있습니다. 그래서 문자열 데이터를 확장시키거나, 수정할 때 사용합니다. str은 변경이 어렵습니다. c++과 비교해서 String.. 더보기