Rust

Rust

BACKEND

āļ āļēāļĐāļēāđ‚āļ›āļĢāđāļāļĢāļĄāļĢāļ°āļšāļšāļ—āļĩāđˆāđƒāļŦāđ‰āļāļēāļĢāļĢāļąāļšāļ›āļĢāļ°āļāļąāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ garbage collector āļœāđˆāļēāļ™āļĢāļ°āļšāļš ownership āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđ€āļ—āļĩāļĒāļšāđ€āļ—āđˆāļē C/C++ āļ”āđ‰āļ§āļĒ zero-cost abstraction, concurrency āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ data race āđāļĨāļ°āļĢāļ°āļšāļšāļ™āļīāđ€āļ§āļĻāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒ (Cargo, crates.io) āļŠāļģāļŦāļĢāļąāļšāļŠāļĢāđ‰āļēāļ‡ backend API, WebAssembly āđāļĨāļ°āļĢāļ°āļšāļšāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ­āļĒāđˆāļēāļ‡āļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ„āļļāļ“āļˆāļ°āđ„āļ”āđ‰āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰

āļĢāļ°āļšāļš ownership āļŠāļģāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļ—āļĩāđˆāļĢāļąāļšāļ›āļĢāļ°āļāļąāļ™āļ‚āļ“āļ°āļ„āļ­āļĄāđ„āļžāļĨāđŒ (āđ„āļĄāđˆāļĄāļĩ garbage collector)

āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž C/C++ āļžāļĢāđ‰āļ­āļĄ zero-cost abstraction āđāļĨāļ°āļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāļĢāļ°āļ”āļąāļšāļ•āđˆāļģ

Concurrency āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ data race āļ”āđ‰āļ§āļĒāļĢāļ°āļšāļšāļ›āļĢāļ°āđ€āļ āļ— (Send, Sync trait)

Pattern matching āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™, enum āļ—āļĢāļ‡āļžāļĨāļąāļ‡ āđāļĨāļ° Result<T, E> āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

Cargo āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ dependency, build āđāļĨāļ°āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđƒāļ™āļ•āļąāļ§

Async/await āļ”āđ‰āļ§āļĒ Tokio āļŦāļĢāļ·āļ­ async-std āļŠāļģāļŦāļĢāļąāļš I/O āđāļšāļš non-blocking

Web framework āļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆ (Axum, Actix-web, Rocket) āļŠāļģāļŦāļĢāļąāļš REST API

āļĢāļ°āļšāļšāļ›āļĢāļ°āđ€āļ āļ—āļ—āļĩāđˆāđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡āļžāļĢāđ‰āļ­āļĄ trait, generic, lifetime āđāļĨāļ°āļāļēāļĢāļ­āļ™āļļāļĄāļēāļ™āļ›āļĢāļ°āđ€āļ āļ—

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ­āļĒāđˆāļēāļ‡āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ (unit test, integration test, doc test, property-based)

āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš WebAssembly āļĢāļ°āļ”āļąāļšāļŠāļąāđ‰āļ™āļŦāļ™āļķāđˆāļ‡, cross-compilation āđāļĨāļ° binary āļ—āļĩāđˆāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļģāļ„āļąāļāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ

āđāļ™āļ§āļ„āļīāļ”āļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŠāļļāļ”āđ€āļžāļ·āđˆāļ­āđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļ™āļĩāđ‰āđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

1

Rust āļžāļ·āđ‰āļ™āļāļēāļ™: āļ•āļąāļ§āđāļ›āļĢ (let, mut), āļ›āļĢāļ°āđ€āļ āļ—āļžāļ·āđ‰āļ™āļāļēāļ™, āļŸāļąāļ‡āļāđŒāļŠāļąāļ™, module

2

Ownership: āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ move, āļāļēāļĢāļĒāļ·āļĄ, āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ (&, &mut), lifetime

3

āļāļŽāļāļēāļĢāļĒāļ·āļĄ: āļŦāļ™āļķāđˆāļ‡ &mut āļŦāļĢāļ·āļ­āļŦāļĨāļēāļĒ &, āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļ—āļĩāđˆāļŦāđ‰āļ­āļĒ

4

Struct, enum, pattern matching āđāļĨāļ° destructuring

5

Trait: āļāļēāļĢāļ™āļīāļĒāļēāļĄ, āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡, āļ‚āļ­āļšāđ€āļ‚āļ• trait, derive macro

6

Generic: āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ generic, struct, enum āļ—āļĩāđˆāļĄāļĩāļ‚āļ­āļšāđ€āļ‚āļ• trait

7

Lifetime: annotation ('a), lifetime elision, static lifetime

8

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”: Result<T, E>, Option<T>, āļ•āļąāļ§āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ ?, panic vs Result

9

Collection: Vec, HashMap, HashSet, iterator āđāļĨāļ° method (map, filter, collect)

10

Iterator: Iterator trait, āļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āđāļšāļš lazy, combinator, āļ§āļ‡āļˆāļĢ for

11

āļĢāļđāļ›āđāļšāļš ownership: Clone vs Copy, Rc/Arc, RefCell/Mutex āļŠāļģāļŦāļĢāļąāļš interior mutability

12

Concurrency: thread, Arc<Mutex<T>>, channel (mpsc), Send/Sync trait

13

Async/await: Future trait, async fn, .await, Tokio runtime, āļ‡āļēāļ™ async

14

Axum/Actix-web: routing, handler, extractor, middleware, āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ–āļēāļ™āļ°

15

āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ: sqlx (āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āļ“āļ°āļ„āļ­āļĄāđ„āļžāļĨāđŒ), Diesel ORM, āļ„āļīāļ§āļĢāļĩāđāļšāļš async

16

Serialization: serde (Serialize, Deserialize), JSON, derive macro

17

āļāļēāļĢāļ—āļ”āļŠāļ­āļš: #[test], #[cfg(test)], assert!, integration test, mock

18

Macro: declarative macro (macro_rules!), procedural macro, derive

19

āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ: āđ„āļĄāđˆāļĄāļĩ null pointer, āđ„āļĄāđˆāļĄāļĩ buffer overflow, thread safety

20

āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž: zero-cost abstraction, inlining, āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž LLVM, profiling

21

Cargo: dependency (Cargo.toml), feature, workspace, build script

22

āļāļēāļĢ deploy: cross-compilation, Docker, static binary, release profile

āļšāļ—āļ„āļ§āļēāļĄ Rust āļĨāđˆāļēāļŠāļļāļ”

āļ„āđ‰āļ™āļžāļšāļšāļ—āļ„āļ§āļēāļĄāđāļĨāļ°āļ„āļđāđˆāļĄāļ·āļ­āļĨāđˆāļēāļŠāļļāļ”āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Rust

āđāļœāļ™āļ āļēāļžāļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡ Async/Await āđƒāļ™ Rust āļ”āđ‰āļ§āļĒ Tokio Runtime āđāļĨāļ° Futures

Async/Await āđƒāļ™ Rust: āļ­āļ˜āļīāļšāļēāļĒ Tokio, Futures āđāļĨāļ° Asynchronous Concurrency āļ­āļĒāđˆāļēāļ‡āļ„āļĢāļšāļ–āđ‰āļ§āļ™

āļšāļ—āļ„āļ§āļēāļĄāļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļš Asynchronous āđƒāļ™ Rust āļ”āđ‰āļ§āļĒ async/await, Tokio runtime āđāļĨāļ° Futures āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ™āļ–āļķāļ‡āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ‚āļąāđ‰āļ™āļŠāļđāļ‡āļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡

āđāļœāļ™āļ āļēāļžāđāļŠāļ”āļ‡āļĢāļ°āļšāļš Ownership āđāļĨāļ° Borrowing āļ‚āļ­āļ‡āļ āļēāļĐāļē Rust

āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆ Ownership āđāļĨāļ° Borrowing āđƒāļ™ Rust āļ­āļĒāđˆāļēāļ‡āļĨāļķāļāļ‹āļķāđ‰āļ‡ āļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļēāđāļĨāļ°āļœāļđāđ‰āđ€āļ•āļĢāļĩāļĒāļĄāļŠāļ­āļšāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļšāļ—āļ„āļ§āļēāļĄāđ€āļˆāļēāļ°āļĨāļķāļāļĢāļ°āļšāļš Ownership āđāļĨāļ° Borrowing āļ‚āļ­āļ‡ Rust āļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ™āļ–āļķāļ‡āļ‚āļąāđ‰āļ™āļŠāļđāļ‡ āļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āļˆāļĢāļīāļ‡āđāļĨāļ°āđāļ™āļ§āļ—āļēāļ‡āđāļāđ‰āļ›āļąāļāļŦāļē Compiler Error āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

Ownership āđāļĨāļ° Borrowing āđƒāļ™ Rust - āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒ

Ownership āđāļĨāļ° Borrowing āđƒāļ™ Rust: āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāļĢāļ°āļšāļš ownership āđāļĨāļ° borrowing āļ‚āļ­āļ‡ Rust āļāļŽāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡ āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ lifetime āđāļĨāļ°āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļ‚āļąāđ‰āļ™āļŠāļđāļ‡

āļ”āļđāļšāļ—āļ„āļ§āļēāļĄ Rust āļ—āļąāđ‰āļ‡āļŦāļĄāļ”