[Rust] workspace
๊ด๋ จ ํฌ์คํธ
https://blog.naver.com/sssang97/222373492319
workspace๋ crate๋ค์ ๊ฐ์ ๋ ๋ฒจ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด๋ค.
๊ธฐ์กด์ crate local link๊ฐ ๊ทธ๋ฅ ์ํ๊ด๊ณ๋ก๋ง ์ข ์์ํค๋ ๊ฒ์ด์๋ค๋ฉด, ์ด๊ฑด ๋๋ฑํ ์กฐ๊ฑด์์ crate๋ผ๋ฆฌ ์ํธ์์ฉํ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
ํ๋ก์ ํธ ๊ตฌ์ฑ
์ฐ์ ๋งจ ๋ฐ๊นฅ์๋ ๊ป๋ฐ๊ธฐ ํ๋ก์ ํธ๊ฐ ์์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ป๋ฐ๊ธฐ์๋ค๊ฐ ์ค์ง์ ์ธ ๊ธฐ๋ฅ์ ํ crate๋ค์ ์ด๊ธฐํํด์ค๋ค. ๋๋ foo์ bar, 2๊ฐ๋ง ์ถ๊ฐํ๋ค.

๊ทธ๋์ ์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ crate ๊ฐ๊ฐ์ ์ ์ ํ ํจ์๋ฅผ ๊ตฌํํ๋ค.
workspace ์ค์
๋งจ ๋ฐ๊นฅ์ ๊ป๋ฐ๊ธฐ crate์๋ ๋ง์ ๊ฒ์ด ํ์ํ์ง ์๋ค.
์ฝ๋๋ ์์ด๋ ๋๊ณ , toml๋ง ์์ผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ workspace์ ์ํ crate๋ค์ ์ง์ ํด์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ crate๋ผ๋ฆฌ๋ ์๋ก๋ฅผ ์ฐธ์กฐํ๋๋ก ๊ตฌ์ฑํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ crate๋ค๋ผ๋ฆฌ ์ฐธ์กฐ๋ฅผ ํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด dependencies์ ์ถ๊ฐ๋ง ํด์ฃผ๋ฉด ๋๋ค.

๊ทธ๋ฆฌ๊ณ ์ฐ๋ฉด

๋์๊ฐ ๊ฒ์ด๋ค.
์ํฌ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด -p ์ต์
์ผ๋ก ์ด๋ค ์๋ธ crate๋ฅผ ์คํํ ๊ฒ์ธ์ง๋ฅผ ์ง์ ํ ์ ์๋ค.
์ด๊ฑฐ ๋ง๊ณ ๋ค๋ฅธ ๋ช
๋ น๋ค์ ์ฌ์ฉํ ๋๋ -p ์ต์
์ ์ฌ์ฉํ๋ฉด ์ต์์ crate์์ sub crate๋ค์ ์ ์ดํ ์ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
workspace๊ฐ ์ฃผ๋ ๋ ํ๋์ ์ด์ ์, ์ข
์์ฑ ๊ด๋ฆฌ๋ฅผ ์ต์์์์ ๋ชจ์ ๊ด๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด crate๋ฅผ ํ๋ ๋ฑ๋กํ๋ฉด

๊ฐ๋ณ crate๊ฐ ์๋, ์ต์์ crate์ Cargo.lock์๋ง ์ข ์์ฑ ํธ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋๋ค.

๋น๋ ๊ฒฐ๊ณผ๋ฌผ๋ ๊ทธ๋ ๋ค. ์ต์์์ ์์ธ๋ค.

์ฐธ์กฐ
https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html