태그: Rust
36편
-
WebAssembly 실전: C/C++ 컴파일 파이프라인, 선형 메모리, JS 상호 운용과 성능
WebAssembly(WASM)의 스택 기반 VM 원리와 컴파일 파이프라인, 선형 메모리와 JS 데이터 교환, Rust(wasm-pack·wasm-bindgen)와 C/C++(Emscripten) 빌드, 번들 크기·SIMD·스레드 최적화까지 정리합니다.
-
Zig 언어: 숨겨진 제어 흐름 없는 설계, comptime, build.zig와 C·Rust 비교
Zig가 숨겨진 제어 흐름을 없앤 설계 원칙, Allocator와 Arena로 메모리를 명시적으로 관리하는 방식, 에러 처리와 comptime, build.zig와 크로스 컴파일, C 상호 운용을 예제로 설명하고 C·C++·Rust와 비교해 장단점을 짚습니다.
-
Tauri 데스크톱 앱 개발: Rust 백엔드 호출, 빌드·배포, Electron과 비교
Rust 기반 데스크톱 앱 프레임워크 Tauri를 정리합니다. Chromium을 번들하지 않고 OS의 WebView를 쓰기 때문에 설치 파일이 작아지는 구조, React/Vue 프론트에서 Rust 명령을 호출하는 방법, 빌드·배포와 Electron과의 차이를 예제로 다룹니다.
-
Rust를 컴파일러 관점에서 보기: 소유권·라이프타임 추론·트레이트 해석·제로 코스트 추상화
Rust 컴파일러가 NLL과 MIR 위에서 빌림을 검사하는 방식, 라이프타임 제약과 생략 규칙·분산·HRTB, 단조화와 dyn Trait vtable, 고아 규칙과 트레이트 해석, thiserror·anyhow·tracing을 쓰는 프로덕션 패턴을 설명합니다.
-
uv와 Rye로 Python 프로젝트 관리하기: pyproject.toml, 가상환경, Python 버전, lock 파일, Docker
Rye가 uv로 합쳐진 배경과 함께, uv로 pyproject.toml 기반 프로젝트를 만들고 가상환경, Python 버전, uv.lock, 워크스페이스를 관리하는 방법을 다룹니다. Docker 캐시, GitHub Actions 설정, uv sync 실패 같은 문제 해결도 포함합니다.
-
mise로 nvm·pyenv·asdf 한 번에 대체하기: mise.toml, 자동 활성화, Tasks, 환경 변수
mise(구 rtx) 정리. Node·Python·Go·Ruby·Java 등 런타임과 CLI 도구를 단일 Rust 바이너리로 관리하는 방법, mise.toml, asdf 호환, 자동 활성화, Tasks 실행기, 환경 변수와 Secrets를 다룹니다.
-
Zig 입문: 숨은 제어 흐름 없는 설계, 명시적 Allocator, defer, comptime, build.zig
Zig 입문자를 위해 변수·Optional·Error Union 문법, 명시적 Allocator와 defer, comptime 제네릭, build.zig, 크로스컴파일과 zig cc, C 인터옵을 예제로 설명하고, 간단한 HTTP 서버 구현과 Zig를 택하거나 피해야 할 기준을 정리합니다.
-
Biome을 팀에 도입할 때: biome.json 규칙 설정, Import 정렬, Git Hooks 연동
팀에 Biome을 도입할 때 규칙 심각도와 overrides 설정, check 명령으로 린트·포맷을 묶는 이유, 저장 시 import 정렬, Husky·lint-staged나 Lefthook 훅 연동, eslint-disable 주석을 남긴 채 점진적으로 옮기는 방법을 설명합니다.
-
Tauri 2.0으로 데스크톱 앱 만들기: 프로젝트 생성, Commands, 플러그인, 멀티 윈도우, 자동 업데이트·배포
Tauri 2.0으로 데스크톱 앱을 만드는 방법. capability 권한 모델, invoke·이벤트 IPC, 플러그인과 store·SQLite 저장, 트레이·사이드카, 멀티 윈도우, 자동 업데이트, GitHub Actions 3개 OS 릴리스, 모바일 빌드, 번들 크기 최적화와 트러블슈팅까지 정리합니다.
-
Oxlint로 린트 속도 올리기: ESLint에서 옮기는 법, 설정과 CI 통합, Biome와 비교
Rust로 만든 Oxlint를 설치해 ESLint flat config를 자동 변환하고 oxlint와 eslint를 함께 돌리며 점진 도입하는 방법, 규칙 카테고리와 -A·-W·-D 플래그, 자동 수정의 안전성, GitHub Actions 통합을 설명합니다.
-
Webpack에서 Rspack으로 옮기기: Loader·Plugin 호환성, SWC 설정, React·Vue 구성, 벤치마크
Rspack은 Rust로 구현된 번들러로 Webpack 설정·생태계와의 호환을 유지합니다. Webpack에서 마이그레이션하는 절차, Loader·Plugin 호환성, SWC 통합, React·Vue 설정, 벤치마크 읽는 법, Turbopack과의 비교를 다룹니다.
-
SWC 컴파일러 심화 가이드 — 고급 설정·플러그인·Next.js·Vite·모노레포
Rust 기반 SWC의 아키텍처, .swcrc 고급 옵션, 플러그인·Next.js·Vite 통합, 성능 튜닝, Babel 비교, 모노레포 설정을 실무 관점에서 정리합니다. SWC(Speedy Web Compiler)는 Rust로 구현된 JavaScript·TypeScript 컴파일러입니다. 단순히 “Babel보다 빠르다”는 인상을 넘어, 파이프라인 구조·설정 계층·도구별 통합 방식을 이해해야 실무에서 오판 없이 튜닝할 수 있습니다.
-
Leptos 가이드 — Rust 풀스택 웹 프레임워크·Signals·SSR·Server Functions
Leptos 핵심 개념, Signals, 컴포넌트·Props, Server Functions, leptos_router, SSR·하이드레이션, 풀스택 앱 구축까지 다룹니다.
-
Actix Web으로 Rust API 서버 만들기: Extractor·미들웨어 순서·WebSocket·sqlx 연동
Actix Web으로 고성능 HTTP·WebSocket·SSE API를 설계하는 법. App·Scope, Extractor·Responder, 미들웨어, DB(sqlx), 마이크로서비스 패턴까지 실전 중심으로 정리합니다.
-
Axum으로 Rust REST API 만들기: Tower 서비스 스택, Extractor, 상태·에러 처리
Tokio·Tower·Hyper 위에서 동작하는 Axum으로 REST API를 만들며 라우팅, Path·Json Extractor 조합, Tower Layer 미들웨어, AppState와 FromRef 상태 공유, IntoResponse 기반 에러 처리, WebSocket 업그레이드를 익힙니다.
-
Biome으로 ESLint·Prettier 대체하기: Rust 파서·규칙 엔진 구조와 에디터·CI 통합
ESLint와 Prettier를 Biome 하나로 바꿀 때 biome.json 작성, biome migrate 자동 변환, overrides 경로별 규칙, VS Code·JetBrains 설정, biome ci와 GitHub Actions, 모노레포 extends 공유까지 순서대로 다룹니다.
-
Rust 소유권·빌림·라이프타임: 댕글링 포인터와 데이터 레이스를 컴파일 타임에 막는 원리, C++와 비교
Rust의 이동과 복사, 불변·가변 참조 규칙, NLL, 라이프타임 어노테이션이 댕글링 참조와 데이터 레이스를 컴파일 단계에서 막는 방식을 C++ unique_ptr·참조와 나란히 비교하고, 대표 컴파일 에러 해결법을 다룹니다.
-
cargo workspace 모노레포 | Cargo.toml 구조·멤버·공통 의존성·빌드 최적화
Cargo workspace로 여러 크레이트를 한 저장소에서 관리할 때 루트 Cargo.toml과 멤버 구성, workspace.dependencies로 버전 단일화, [patch]·default-members·exclude 사용법과 멤버 미인식·버전 충돌 해결법을 다룹니다.
-
Rust 소유권 에러 디버깅 사례: cannot move out·cannot borrow as mutable·lifetime 에러 해결
cannot move out of borrowed content, cannot borrow as mutable more than once, lifetime may not live long enough 같은 Rust 소유권 에러를 문제 코드와 에러 메시지로 재현하고, 원인과 해결 코드를 사례별로 보여 줍니다.
-
Rust String vs &str: 소유권 차이와 함수 인자로 무엇을 받을지
Rust String과 &str이 메모리에 어떻게 놓이는지, 함수 매개변수·구조체 필드·반환값에서 어느 쪽을 써야 하는지, 불필요한 to_string()과 &str 반환 시 수명 문제 같은 흔한 실수를 예제로 비교합니다.
-
Rust 웹 개발 | Actix-web으로 REST API 만들기
Actix-web으로 Todo REST API를 만들며 CRUD 핸들러와 라우팅, 로깅·CORS·Bearer 토큰 인증 미들웨어, web::Data 공유 상태의 Mutex·RwLock 선택, 커스텀 에러 타입, sqlx 연결 풀, 테스트와 배포 설정을 다룹니다.
-
Rust 테스팅 | 단위 테스트, 통합 테스트, 벤치마크
Rust 테스트 작성법. #[test] 단위 테스트와 assert 매크로, should_panic, Result를 반환하는 테스트, tests/ 디렉토리의 통합 테스트와 공통 모듈 구성, 계산기 예제를 정리합니다.
-
Rust CLI 도구 만들기 | clap, 파일 처리, 에러 처리
Rust로 CLI 도구를 만들 때 clap derive로 인자와 서브커맨드를 파싱하고, 파일 읽기·쓰기와 에러 처리를 붙여 단어 카운터와 stdin·파일 입력을 받는 JSON 포맷터를 구현하며 main에서 unwrap을 피하는 이유를 설명합니다.
-
C++ 개발자를 위한 Rust | 차이점과 전환 가이드
C++ 개발자가 Rust로 넘어갈 때 RAII와 소유권, 복사 의미론과 이동 의미론, null 포인터와 Option, 예외와 Result, 스레드 공유 상태 처리 방식이 어떻게 다른지 코드로 비교하고 const std::string& 같은 관용구의 대응을 보여 줍니다.
-
Rust 시작하기 | 메모리 안전한 시스템 프로그래밍 언어
rustup으로 Rust를 설치하고 cargo new로 Hello World를 실행한 뒤, Cargo.toml과 cargo check·build·run 차이, 변수와 함수, 소유권과 참조의 기본, 스칼라·복합 타입을 간단한 계산기 예제로 익힙니다.
-
Rust 소유권 | Ownership, Borrowing, Lifetime
Rust 소유권 세 가지 규칙, 함수 호출 시 소유권 이동과 반환, 불변 참조와 가변 참조의 빌림 규칙, 슬라이스, 함수·구조체의 라이프타임 애노테이션을 문자열 처리 예제로 설명하고 &String 대신 &str을 받는 이유를 짚습니다.
-
Rust 구조체와 열거형 | Struct, Enum, Pattern Matching
Rust 구조체·열거형·패턴 매칭을 정리합니다. 구조체 업데이트 문법의 이동 규칙, &self·&mut self·self 메서드, 데이터를 담는 enum, Option·Result와 ? 연산자, match 완전성 검사와 if let을 예제와 흔한 컴파일 에러로 설명합니다.
-
Rust 에러 처리 | Result, Option, ? 연산자
Rust에서 Result와 Option을 다루는 메서드와 체이닝, ? 연산자로 에러를 전파하는 법, panic!과 unwrap·expect를 써도 되는 경우, 커스텀 에러 타입과 에러 변환 패턴을 파일 파싱·입력 검증 예제로 설명합니다.
-
Rust 트레이트 | Trait, 제네릭, 트레이트 바운드
Rust 트레이트 정의와 기본 구현, 제네릭 함수·구조체, 트레이트 바운드와 where 절·impl Trait, 연관 타입과 제네릭 매개변수의 선택 기준, dyn Trait 트레이트 객체, derive와 Iterator·From·Display 구현을 예제로 다룹니다.
-
Rust 컬렉션 | Vec, HashMap, HashSet
Vec, HashMap, HashSet을 다루면서 push는 소유권을 넘기고 iter는 빌려 본다는 차이를 API별로 짚습니다. Entry API로 갱신과 삽입을 한 번에 처리하는 법, VecDeque·BTreeMap을 고르는 기준, capacity로 재할당을 줄이는 법도 다룹니다.
-
Rust 동시성 | Thread, Channel, Arc, Mutex
Rust 동시성 프로그래밍. thread::spawn과 move 클로저로 데이터 넘기기, 채널(mpsc)로 메시지 주고받기, Arc<Mutex<T>>로 상태 공유하기, 데이터를 청크로 나눈 병렬 계산 예제를 정리합니다.
-
Rust 비동기 프로그래밍 | async/await, Tokio
Rust async/await와 Future 트레이트의 동작 원리, Tokio 런타임에서 태스크 생성과 병렬 실행, reqwest로 타임아웃·재시도가 있는 HTTP 요청, async 코드에서 Mutex·RwLock·채널을 고르는 기준을 예제로 설명합니다.
-
Rust 시리즈 전체 목차 | 메모리 안전한 시스템 프로그래밍
Rust 시리즈 12편의 목차와 읽는 순서를 정리했습니다. 입문과 소유권에서 트레이트·에러 처리, 비동기와 Tokio, Actix-web 웹 API, CLI 도구 제작, C++ 개발자용 비교 편까지 수준별 학습 경로를 안내합니다.
-
C++ vs Rust: 소유권, 메모리 안전성, 에러 처리, 동시성, 성능 비교
use-after-free 크래시나 borrow checker에 막혀 개발이 느려지는 상황처럼 C++와 Rust 사이에서 고민할 때 필요한 비교를 코드로 보여줍니다. 이동 의미의 차이, 댕글링과 null 안전성, 예외·expected와 Result, Send·Sync 기반 동시성을 다룹니다.
-
C++ 개발자가 보는 Rust 메모리 안전성: 소유권, Borrow Checker, 수명, unsafe 경계
버퍼를 넘긴 뒤 다시 쓰거나 로컬 포인터를 반환하는 C++ 메모리 버그가 Rust에서는 왜 컴파일 단계에서 막히는지 소유권, 빌림 규칙, NLL, 수명 파라미터로 설명합니다. 스레드에 Rc를 넘기는 실수와 unsafe 경계를 어디에 둘지도 다룹니다.
-
C++와 Rust: 두 언어의 상호 운용성과 Memory Safety 논쟁의 실체
레거시 C++ 코드를 유지하면서 새 기능을 Rust로 쓰려면 C ABI를 경계로 삼아야 합니다. extern "C"와 #[no_mangle]로 양방향 호출하기, 구조체 레이아웃 맞추기, bindgen과 cxx 크레이트, FFI 경계의 소유권 꼬임과 panic 전파 문제를 다룹니다.