Rust 15

Rust로 간단한 CLI 유효성 검사 도구 만들기

Rust로 간단한 CLI 유효성 검사 도구 만들기개요Rust 공부하면서 배운 문법으로 간단한 무언가를 만들어보고 싶어서 이번에 소개할 유효성 검사 도구를 만들어봤습니다. 간단한 수준이지만 데이터 형식에 대한 기본적인 유효성 검사를 수행하는 프로그램입니다. Rust 초보자로서 완벽한 코드를 작성했다는 자신은 없고, ChatGPT의 도움도 꽤 많이 받았습니다. 초보자가 만든 작은 프로젝트로 봐주시면 감사하겠습니다.프로젝트 설정: Cargo.toml[package]name = "validation-tool"version = "0.1.0"edition = "2021"[dependencies]dialoguer = "0.11"ferris-says = "0.3.1"regex = "1.8" Rust 입문을 위한 프로젝..

Rust 2024.11.24

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