[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