Rust 14

Rust 처음 배우기: TypeScript 개발자의 도전기

Rust 처음 배우기: TypeScript 개발자의 도전기안녕하세요! 프론트엔드 개발을 주로 하며 TypeScript를 사용하는 개발자입니다. 최근에 Rust를 배우기 시작했는데, 처음에는 어디서부터 시작해야 할지 막막했어요. 그래서 Rust를 처음 접하는 분들, 특히 TypeScript를 주로 사용하는 분들을 위해 이 글을 작성하게 되었는데요. Rust의 기초를 다루고 TypeScript와의 비교를 통해 더 쉽게 이해할 수 있도록 돕고자 합니다. 이 글이 Rust를 배우고자 하는 분들에게 도움이 되기를 바랍니다. Rust란 무엇인가?Rust는 메모리 안전성과 병행성을 보장하는 시스템 프로그래밍 언어인데요. Rust는 C/C++ 같은 저수준 언어의 성능을 가지면서도, 메모리 관리에서 발생할 수 있는 여러..

Rust 2024.10.21

Rust 강좌 8 - anymap

Rust 강좌 8 - anymap이번 글에서는 Rust의 anymap 크레이트에 대해 다룰 건데요. 이 크레이트는 Rust-http와 teepee로 유명한 Chris Morgan이 만든 것인데요. 이 크레이트는 약간 특이하고 흥미로운 컨테이너인 AnyMap 타입을 제공해요. AnyMap 타입은 일반적인 맵과는 다릅니다. 예를 들어, Rust의 HashMap은 K(키의 타입)와 V(맵에 저장된 값의 타입)에 의해 매개변수화된 제네릭 타입이에요. (여기에는 해시 함수(hasher) 매개변수도 있지만, 이는 여기에서는 관련이 없어요.) 반면, AnyMap 자체는 제네릭 타입이 아니에요. 내부적으로 HashMap을 사용하지만, 그 사실을 알 필요는 없어요. 개념적으로, AnyMap은 타입에서 값으로 매핑합니다...

Rust 2024.10.08

Rust 강좌 7 - itertools

Rust 강좌 7 - itertoolsitertools 크레이트는 Haskell과 Python의 itertools에서 영감을 받은 여러 유틸리티 함수와 매크로를 포함하고 있는데요. 이름에서 알 수 있듯이, 이는 반복(iteration)과 반복자(iterators)와 관련이 있습니다. itertools를 사용하려면, 다음과 같은 의존성 선언을 Cargo.toml에 추가하면 되는데요:[dependencies]itertools = "~0.0.4" 우리는 도우미 함수부터 시작해서 나중에 매크로를 다룰 건데요. foreach이 함수와 몇몇 다른 함수는 Itertools 트레이트에 포함되어 있어서, 모듈에 use itertools::Itertools를 추가해 범위에 넣어야 하는데요. foreach()는 개념적으로 ..

Rust 2024.10.08

Rust 강좌 6 -JSON과 함께 작업해볼까요?

Rust 강좌 6 -JSON과 함께 작업해볼까요?JSON은 현대 웹의 핵심 데이터 형식입니다. 자바스크립트 세계에서 비롯되어 많은 관심을 받았고, 현재는 데이터 교환 형식으로 웹 개발자의 첫 번째 선택인데요. 웹뿐만 아니라 한때는 자바스크립트 전용이었던 JSON 지원이 이제는 어디에서나 가능합니다. 많은 언어들이 표준 라이브러리에 JSON 파서를 포함하고 있고, 그렇지 않은 경우에도 누군가 이미 서드 파티 라이브러리를 만들어 놓았는데요. Rust의 경우, JSON 지원은 rustc_serialize::json 모듈에서 제공됩니다. 참고로, 이번 글에서는 웹, API, 요청 등에 초점을 두지 않았습니다. 이전에 hyper에 대한 글에서 JSON을 언급했지만, 이번에는 JSON으로 인코딩된 데이터가 어디에서..

Rust 2024.10.08

Rust 강좌 5 - 안전하고 효율적인 Hyper로 HTTP 요청 처리하기

Rust 강좌 5 - 안전하고 효율적인 Hyper로 HTTP 요청 처리하기안녕하세요! 오늘은 Rust의 대표적인 HTTP 라이브러리인 hyper를 알아볼 텐데요. Rust의 HTTP 라이브러리 생태계는 1.0 이전까지는 변화가 많았지만, 이제는 hyper가 많은 Rust 개발자들의 사랑을 받는 대표 라이브러리로 자리 잡았습니다. 이 장에서는 hyper를 클라이언트로 사용하는 방법에 집중해 볼까 합니다. 이 라이브러리는 서버 구현도 포함하고 있지만, 대부분의 개발자들은 서버를 직접 만드는 것보다는, 이미 만들어진 서버의 API를 소비하는 경우가 많습니다. 그러면, hyper가 어떻게 우리에게 도움을 줄 수 있을까요?1. 기본적인 요청 보내기우선, Cargo.toml 파일에 의존성을 추가해 보겠습니다.[de..

Rust 2024.09.19

Rust 강좌 4 - Rust에서 명령줄 인자 파싱을 쉽게! docopt 사용법 완벽 가이드

Rust 강좌 4 - Rust에서 명령줄 인자 파싱을 쉽게! docopt 사용법 완벽 가이드Relevancy(유효성): 1.9 stable (매크로는 nightly에서만 사용 가능) 명령줄 프로그램을 작성할 때 가장 귀찮은 작업 중 하나가 인자 파싱(argument parsing)인데요, 예를 들어 myprogram --config=myfile.conf --verbose -o output.txt 같은 명령을 입력했을 때, 이를 어떻게 해석할지 결정하는 작업입니다. 인자 중에는 짧은 버전과 긴 버전이 있고, 일부는 선택적이며, 또 다른 일부는 위치 인자일 수도 있는데요. 인자 파싱을 위한 라이브러리는 굉장히 많습니다. 그중 일부는 각 언어의 표준 라이브러리에도 포함되어 있죠. 러스트(Rust)의 경우에는 ..

Rust 2024.09.14

Rust 강좌 3. CSV 파일 처리하기: 쉽고 간편한 방법

Rust로 CSV 파일 처리하기: 쉽고 간편한 방법안녕하세요! 오늘은 Rust에서 CSV 파일을 처리하는 방법에 대해 알아보겠습니다. 많은 프로그래머들이 경력 중에 CSV 형식을 접해본 경험이 있을 텐데요. 재무 데이터 분석이나 웹 애플리케이션의 사용자 활동 기록을 다운로드할 수 있게 하려면 CSV 형식은 매우 유용한 방법입니다. 하지만 CSV는 표준화되어 있지 않기 때문에 다양한 구현에서 여러 가지 특성이 생길 수 있습니다. CSV 파일 쓰기CSV 파일을 쓰는 것은 생각보다 간단할 것 같은데요. 먼저, Rust에서 CSV 파일을 작성하는 방법을 살펴보겠습니다. 예를 들어, 아래와 같은 데이터를 CSV 파일로 저장해보겠습니다.CSV 파일 작성 예제use csv::Writer;fn main() { l..

Rust 2024.09.07

Rust의 메모리 관리와 GC 언어 비교

안녕하세요! 오늘은 프로그래밍 언어에서 중요한 개념 중 하나인 메모리 관리에 대해 이야기해보려고 합니다. 특히, Rust와 GC(가비지 컬렉션) 기능이 있는 언어를 비교해보면서, 어떻게 메모리가 관리되는지 알아보겠습니다. 프로그래밍을 하다 보면, 우리가 작성한 코드가 컴퓨터 메모리를 어떻게 사용하는지 이해하는 것이 중요합니다. 왜냐하면 메모리 관리가 잘못되면 프로그램이 느려지거나, 심지어 크래시가 발생할 수 있기 때문이죠. 자, 그럼 Rust가 메모리 관리를 어떻게 하는지, 그리고 Java나 Python 같은 GC 기능이 있는 언어와는 어떤 차이가 있는지 살펴볼까요? Rust의 메모리 관리: 소유권 시스템Rust는 소유권 시스템(ownership system)이라는 독특한 메모리 관리 방식을 사용합니다...

Rust 2024.08.08

Rust 강좌 2. 프라임 - 소수와 친해지기

새로운 프로그래밍 언어를 배우기 시작할 때, 저는 항상 프로젝트 오일러 문제에 대한 여러 가지 해결책을 코드로 작성하는 것을 좋아합니다.  이 문제들은 수학 중심적이어서 일반적인 프로그래밍 입문으로는 최선의 선택은 아닐 수 있지만, 시작하기에는 좋습니다. 어쨌든, 문제를 푸는 것이 정말 재미있거든요! (...그리고 힘으로 푸는 것보다 빠르게 푸는 것이 훨씬 더 재미있죠.) 많은 프로젝트 오일러 문제는 어떤 식으로든 소수와 관련이 있습니다. n번째 소수를 찾거나, 효율적인 소인수분해를 하거나, 어떤 숫자가 소수인지 아닌지를 확인하는 등의 문제들이죠. 물론 이러한 수학적 절차를 직접 코드로 작성할 수도 있지만, 저는 게으른 편입니다. 그래서 기존에 만들어진 코드를 찾아 나섰고, 후온 윌슨(Huon Wilso..

Rust 2024.08.08

Rust 강좌 1. Cargo와 crates.io

안녕하세요? Rust를 공부하고 싶어 복습차원에서 글로 남겨 봅니다. Rust를 좋아하지만, 아직 깊이 파고들고 있는 중이거든요. 첫 번째는 패키지 관리에 대해 간략하게 다뤄보겠습니다. Python, Ruby 또는 Node.js를 사용해 보신 분들은 어느 정도 익숙하실 수도 있습니다. C++에는 전용 패키지 관리자가 없기 때문에, 이 부분이 C++ 개발자들에게 Rust를 매력적으로 만드는 요소 중 하나가 될 수 있을 것입니다. CargoCargo는 Rust의 패키지 관리자입니다. rustup.sh 스크립트를 사용하여 컴파일러를 설치하면 Cargo도 함께 설치됩니다. Cargo는 코드를 빌드하고 의존성을 관리합니다. 또한 새 프로젝트를 시작할 때 기본적인 프로젝트 구조를 생성해 줍니다.$ cargo new..

Rust 2024.08.05