본문 바로가기

Rust

[Rust] 포인터의 종류와 사용방법 Rust에서는 다양한 종류의 포인터를 제공합니다. 이 포인터들은 메모리 안전성, 소유권, 뮤터불리티 등 다양한 측면에서 사용됩니다. 아래에 주요 포인터 타입에 대한 설명을 제공하겠습니다. Rust에서는 여러 종류의 포인터를 제공합니다. 각각의 포인터는 메모리 안전성을 보장하는 데 다양한 방법을 사용합니다. 아래 테이블에서 주요 포인터 타입의 특징을 비교하겠습니다. 먼저 들어가기 전에 뮤터블과 (Mutable)과 이뮤터블(Immutable)의 간략히 짚고 갑니다. 아래는 비교한 표입니다. 뜻 변경 가능한 변경 불가능한 변수 선언 let mut x = 5; let x = 5; 값 변경 가능 (x = 6;) 불가능 배열/벡터 수정 가능 (vec.push(1);) 불가능 메모리 안정성 상대적으로 낮음 높음 데이.. 더보기
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.. 더보기
[Rust] 벡터 (Vector) Vector Vector는 컬렉션 타입이며 메모리에서 모든 값을 근처에 있는 단일 데이터 구조에 둘 이상의 값을 저장할 수 있습니다. 또, 벡터는 같은 유형의 값만 저장할 수 있습니다. 벡터는 컴파일 타임에 사이즈를 정할 필요는 없고, 동작중에 늘어나거나 줄어들 수 있습니다. 벡터는 scope밖으로 벗어날 경우 해제 됩니다 벡터 생성 벡터를 생성하려면 Vec::new() 함수 또는 vec! 매크로로 생성을 합니다. 초기 값으로 벡터를 생성하면 Rust는 값의 타입을 유추합니다. let v: Vec = Vec::new(); let v = vec![1, 2, 3]; Element 추가 push() 메소드를 사용하면 벡터에 element를 넣을 수 있습니다. let mut v = Vec::new(); v.pu.. 더보기