Rust

Rust

BACKEND

์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•œ C/C++ ๋™๋“ฑ ์„ฑ๋Šฅ, ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค ์—†๋Š” ๋™์‹œ์„ฑ, ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฑ์—”๋“œ API, WebAssembly, ํ•ต์‹ฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ’๋ถ€ํ•œ ์ƒํƒœ๊ณ„(Cargo, crates.io)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์šธ ๋‚ด์šฉ

์ปดํŒŒ์ผ ์‹œ์ ์— ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ (๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์—†์Œ)

์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”์™€ ์ €์ˆ˜์ค€ ์ œ์–ด๋ฅผ ํ†ตํ•œ C/C++ ์„ฑ๋Šฅ

ํƒ€์ž… ์‹œ์Šคํ…œ (Send, Sync traits)์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค ์—†๋Š” ๋™์‹œ์„ฑ

ํ‘œํ˜„๋ ฅ ์žˆ๋Š” pattern matching, ๊ฐ•๋ ฅํ•œ enums, Result<T, E>๋ฅผ ํ™œ์šฉํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ

์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋นŒ๋“œ, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Cargo

Tokio ๋˜๋Š” async-std๋ฅผ ํ™œ์šฉํ•œ ๋…ผ๋ธ”๋กœํ‚น I/O๋ฅผ ์œ„ํ•œ Async/await

REST API๋ฅผ ์œ„ํ•œ ํ˜„๋Œ€์  ์›น ํ”„๋ ˆ์ž„์›Œํฌ (Axum, Actix-web, Rocket)

traits, generics, lifetimes, ํƒ€์ž… ์ถ”๋ก ์„ ๊ฐ–์ถ˜ ๊ฐ•ํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ

ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ (unit tests, integration tests, doc tests, property-based)

WebAssembly ํผ์ŠคํŠธ ํด๋ž˜์Šค ์ง€์›, ํฌ๋กœ์Šค ์ปดํŒŒ์ผ, ์ตœ์ ํ™”๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ

๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•  ํ•ต์‹ฌ ์ฃผ์ œ

์ด ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜๊ณ  ๋ฉด์ ‘์—์„œ ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…

1

Rust ๊ธฐ์ดˆ: ๋ณ€์ˆ˜ (let, mut), ๊ธฐ๋ณธ ํƒ€์ž…, ํ•จ์ˆ˜, ๋ชจ๋“ˆ

2

์†Œ์œ ๊ถŒ: move semantics, borrowing, ์ฐธ์กฐ (&, &mut), lifetimes

3

Borrowing ๊ทœ์น™: ํ•˜๋‚˜์˜ &mut ๋˜๋Š” ์—ฌ๋Ÿฌ &, ๋Œ•๊ธ€๋ง ์ฐธ์กฐ ์—†์Œ

4

Structs, enums, pattern matching, destructuring

5

Traits: ์ •์˜, ๊ตฌํ˜„, trait bounds, derive macros

6

Generics: ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜, structs, trait bounds๋ฅผ ๊ฐ€์ง„ enums

7

Lifetimes: ์ฃผ์„ ('a), lifetime elision, static lifetime

8

์—๋Ÿฌ ์ฒ˜๋ฆฌ: Result<T, E>, Option<T>, ? ์—ฐ์‚ฐ์ž, panic vs Result

9

์ปฌ๋ ‰์…˜: Vec, HashMap, HashSet, ์ดํ„ฐ๋ ˆ์ดํ„ฐ์™€ ๋ฉ”์„œ๋“œ (map, filter, collect)

10

์ดํ„ฐ๋ ˆ์ดํ„ฐ: Iterator trait, ์ง€์—ฐ ํ‰๊ฐ€, combinators, for ๋ฃจํ”„

11

์†Œ์œ ๊ถŒ ํŒจํ„ด: Clone vs Copy, Rc/Arc, ๋‚ด๋ถ€ ๊ฐ€๋ณ€์„ฑ์„ ์œ„ํ•œ RefCell/Mutex

12

๋™์‹œ์„ฑ: ์Šค๋ ˆ๋“œ, Arc<Mutex<T>>, channels (mpsc), Send/Sync traits

13

Async/await: Future trait, async fn, .await, Tokio runtime, async tasks

14

Axum/Actix-web: routing, handlers, extractors, middleware, ์ƒํƒœ ๊ด€๋ฆฌ

15

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: sqlx (์ปดํŒŒ์ผ ์‹œ์  ์ฒดํฌ), Diesel ORM, ๋น„๋™๊ธฐ ์ฟผ๋ฆฌ

16

์ง๋ ฌํ™”: serde (Serialize, Deserialize), JSON, derive macros

17

ํ…Œ์ŠคํŠธ: #[test], #[cfg(test)], assert!, integration tests, mocking

18

๋งคํฌ๋กœ: ์„ ์–ธ์  ๋งคํฌ๋กœ (macro_rules!), ์ ˆ์ฐจ์  ๋งคํฌ๋กœ, derive

19

๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ: null ํฌ์ธํ„ฐ ์—†์Œ, ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์—†์Œ, ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ

20

์„ฑ๋Šฅ: ์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”, inlining, LLVM ์ตœ์ ํ™”, profiling

21

Cargo: ์˜์กด์„ฑ (Cargo.toml), features, workspaces, build scripts

22

๋ฐฐํฌ: ํฌ๋กœ์Šค ์ปดํŒŒ์ผ, Docker, ์ •์  ๋ฐ”์ด๋„ˆ๋ฆฌ, release profiles

์ตœ์‹  Rust ๊ธฐ์‚ฌ

Rust์— ๊ด€ํ•œ ์ตœ์‹  ๊ธฐ์‚ฌ์™€ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”

Rust async await concurrency with Tokio runtime and futures execution flow

Rust Async/Await ์™„๋ฒฝ ๊ฐ€์ด๋“œ: Tokio, Futures, ๋น„๋™๊ธฐ ๋™์‹œ์„ฑ ์‹ฌ์ธต ๋ถ„์„

Rust์˜ Async/Await๋ฅผ Tokio ๋Ÿฐํƒ€์ž„, Future ํŠธ๋ ˆ์ดํŠธ, ํƒœ์Šคํฌ ์Šคํฐ, ๊ตฌ์กฐํ™”๋œ ๋™์‹œ์„ฑ, ์‹ค์ „ ํŒจํ„ด๊นŒ์ง€ ๊นŠ์ด ์žˆ๊ฒŒ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

Rust ์†Œ์œ ๊ถŒ๊ณผ ๋นŒ๋ฆผ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ์ˆ  ๊ฐ€์ด๋“œ ์ปค๋ฒ„ ์ด๋ฏธ์ง€

Rust ์†Œ์œ ๊ถŒ๊ณผ ๋นŒ๋ฆผ: ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์˜ ํ•ต์‹ฌ ์›๋ฆฌ ์™„๋ฒฝ ํ•ด์„ค

Rust์˜ ์†Œ์œ ๊ถŒ(Ownership), ๋นŒ๋ฆผ(Borrowing), ๋ผ์ดํ”„ํƒ€์ž„(Lifetime) ๊ฐœ๋…์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ์‹ค๋ฌด ํŒจํ„ด, ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ํฌ์ธํŠธ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Rust์˜ ์†Œ์œ ๊ถŒ๊ณผ ๋นŒ๋ฆผ - ์™„๋ฒฝ ๊ฐ€์ด๋“œ

Rust์˜ ์†Œ์œ ๊ถŒ๊ณผ ๋นŒ๋ฆผ: ์™„๋ฒฝ ๊ฐ€์ด๋“œ

Rust์˜ ์†Œ์œ ๊ถŒ๊ณผ ๋นŒ๋ฆผ ์‹œ์Šคํ…œ์„ ๋งˆ์Šคํ„ฐํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ๊ถŒ ๊ทœ์น™, ์ฐธ์กฐ, ๋ผ์ดํ”„ํƒ€์ž„, ๊ณ ๊ธ‰ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํŒจํ„ด์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๋ชจ๋“  Rust ๊ธฐ์‚ฌ ๋ณด๊ธฐ