[Rust] ํฌ๋ ˆ์ดํŠธ

ํฌ๋ ˆ์ดํŠธ(crate)๋Š” Rust์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€, ํ˜น์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹จ์œ„๋‹ค.
์ด์ œ๊นŒ์ง€ ์จ์™”๋˜ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์‹ค std๋ผ๋Š” ํ•˜๋‚˜์˜ ํฌ๋ ˆ์ดํŠธ์˜€๋˜ ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ํ•œ๋ฒˆ ํฌ๋ ˆ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด๊ฑด Clion์—์„œ์˜ ๋ฐฉ๋ฒ•์ด๊ณ ,
ํ„ฐ๋ฏธ๋„์—์„œ new ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑํ•  ๋•Œ๋Š” --bin ๋Œ€์‹  --lib ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ๋ฉด ๋œ๋‹ค.

์—ฌํŠผ ๋งŒ๋“ค๋ฉด ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
main.rs ๋Œ€์‹  lib.rs๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ €๊ฑด ๋‹จ์ˆœํžˆ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋“ค์ด๋‹ค.
assert ๋งคํฌ๋กœ๋“ค์„ ์ด์šฉํ•ด์„œ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋ฉด ๋œ๋‹ค.


๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜ boom์„ ํ•˜๋‚˜ ์ •์˜ํ–ˆ๋‹ค.
์™ธ๋ถ€๋กœ ๊ณต๊ฐœํ•ด์•ผ ํ•˜๋Š” ์š”์†Œ๋“ค์€ ์ „๋ถ€ pub๋ฅผ ๋‹ฌ์•„์ค˜์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค, ์žŠ์ง€ ๋ง์ž.

๊ทธ๋Ÿผ ๋Œ€์ถฉ ์‹คํ–‰์„ ํ•˜๋“ ์ง€, ๋นŒ๋“œ๋ฅผ ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด target ํด๋”์— ์ด๋Ÿฐ์ €๋Ÿฐ ๊ฒฐ๊ณผ๋ฌผ๋“ค์ด ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.

.rlib๊ฐ€ ๋Ÿฌ์ŠคํŠธ์˜ ํฌ๋ ˆ์ดํŠธ ํŒŒ์ผ์ด๋‹ค.
๊ทผ๋ฐ ๋ญ... ์šฐ๋ฆฌ๊ฐ€ ๋‹น์žฅ ์ €๊ฑธ ์ง์ ‘ ์“ธ๊ฑด ์•„๋‹ˆ๊ณ , ์ด ํ”„๋กœ์ ํŠธ ํด๋” ๊ฒฝ๋กœ๋งŒ ๋ณต์‚ฌํ•ด๋‘”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค.
cargo.toml ์„ค์ •์„ ์—ด์–ด์„œ

๋ฐฉ๊ธˆ ๋งŒ๋“  ํฌ๋ ˆ์ดํŠธ์˜ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.


๊ทธ๋Ÿผ ์†Œ์Šค์ฝ”๋“œ์—์„œ๋Š” extern crate ํฌ๋ ˆ์ดํŠธ๋ช…์˜ ํ˜•์‹์œผ๋กœ ํฌ๋ ˆ์ดํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

์ € ํฌ๋ ˆ์ดํŠธ๋ช…์€ ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
์•„๊นŒ ์ž‘์„ฑํ–ˆ๋˜ ํ•จ์ˆ˜ boom์„ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

์ž˜ ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์›๋ž˜ ํฌ๋ ˆ์ดํŠธ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜์ง„ ์•Š๊ณ , ๋ณดํ†ต crates.io์— ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๊ฑด ๋”ฐ๋กœ ๋‹ค๋ฃจ๊ฒ ๋‹ค.


์ฐธ์กฐ
๋Ÿฌ์ŠคํŠธ ํ•ต์‹ฌ ๋…ธํŠธ
https://users.rust-lang.org/t/how-to-use-my-own-crate/2634/2