Rust, 쉽게 하자!

전체 글 59

[Rust] cargo fmt 그리고 cargo clippy

cargo fmt 그리고 cargo clippy 유용한 cargo tool 두 가지를 소개합니다. fmt는 cargo가 제공하는 Rust용 코드 formatter입니다. 코드를 예쁘게 정렬시킵니다. clippy는 우리가 작성한 코드의 오류를 잡아주기도 하고 불필요한 코드를 알려 주기도 합니다. 오류 없고 깨끗한 코드를 작성하기 위해 꼭 필요한 도구입니다. 두 가지 모두 처음 사용할 때 cargo로 추가 설치를 해주어야 합니다. - fmt 추가 cargo component add fmt - clippy 추가 cargo componrnt add clippy 이제 사용법을 알아봅시다. f먼저 cargo mt입니다. fn main() { let a=10;letb=20; let c = a*b; println!("..

Rust 중급 2022.11.08

[Rust] 코드 실행 랩타임 측정하기

코드 실행 랩타임 측정하기 Rust의 standard library인 time을 활용해서 코드 실행 시간을 측정하는 방법을 소개합니다. 코드 보겠습니다. use std::time::Instant; // 팩토리얼을 구하는 함수 fn factorial(n: u128) -> u128 { match n { 0 => 0, 1 => 1, _ => factorial(n - 1) * n } } fn main() { let n = 25; let now = Instant::now(); // 현재 시각 let result = factorial(n); let lap = now.elapsed().as_nanos(); // 랩타임 측정 println!("factorial({})={}, lap : {} ns", n, result,..

Rust 중급 2022.11.02

[Rust] macros - declarative macros

macros - declarative macros Rust를 처음 사용할 때 대부분 println!()을 접하게 됩니다. println!()은 C의 ptintf() 함수처럼 사용할 수 있지만 함수가 아닙니다. 매크로 (macros)입니다. Vet! 도 매크로입니다. 매크로는 이름 뒤에 ‘!’가 붙어서 함수와 구분됩니다. 매크로는 컴파일러가 컴파일할 때 프로그래머가 의도한 코드를 생성하게 합니다. Metaprogramming의 일종입니다. Rust의 매크로는 크게 두 종류가 있습니다. Declarative macros와 procedural macros. 이 글에서는 declarative macros만 다루고 procedural macros는 다음 기회에 소개하겠습니다. 다음 코드를 보면서 declarati..

Rust 중급 2022.10.30

[Rust] Arc, Mutex (스레드의 데이터 공유)

5. Arc, Mutex. (스레드의 데이터 공유) 스레드 사이에 데이터를 교환하는 방법은 크게 두 가지가 있습니다. 앞 장에서 본 Message passing과 이번 장에서 볼 데이터 공유입니다. Message passing은 채널을 통해서 데이터를 진짜 주고받는 방식입니다. 반면에 데이터 공유 방식은 데이터를 주고 받는 대신 메모리의 데이터를 공유해서 스레드 사이의 통신을 달성하는 방법입니다. Rust는 스레드 사이의 데이터 공유를 달성하기 위해 Arc와 Mutex를 사용합니다. Arc와 Mutex는 스마트 포인터입니다. 이미 공부했던 스마트 포인터, Rc, Cell, RefCell 등은 하나의 스레드에 자리 잡고 있습니다. 다른 스레드의 스마트 포이터와 그 데이터를 사용할 수는 없습니다. Arc는 ..

Rust 입문 2022.10.28

[Rust] Message passing ( channel로 다른 스레드의 값 사용 하기 )

4. Message passing ( channel로 다른 스레드의 값 사용 하기 ) 앞 장에서는 main 스레드의 값(데이터)을 새로 만든 스레드에서 사용하는 방법을 살펴봤습니다. 여기서는 다른 스레드의 값을 사용하는 방법을 살펴보겠습니다. Rust는 스레드 사이의 데이터 교환을 위해 통신 채널을 사용합니다. 채널은 송신자와 수신자를 가지고 있습니다. 스레드 사이의 데이터 교환을 위해 먼저 채널의 송신자와 수신자를 생성하고 이것을 스레드에서 사용합니다. 이런 방법을 message passing이라고 합니다. 코드에서 살펴보겠습니다. 새로운 스레드에서 데이터를 보내고 main 스레드에서 데이터를 받고 있습니다. use std::sync::mpsc::channel; use std::thread; use s..

Rust 입문 2022.10.27
반응형