gost v0.4.0

โ€‹https://github.com/myyrakle/gost

Gost๋Š” Go์—์„œ Rust์˜ ์ฐธ๋ง›์„ ๋А๋‚„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

์ด๋ฒˆ์—๋Š” HashMap๊ณผ Vec์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๋ณด์™„, ์ถœ๋ ฅํ•จ์ˆ˜, fs/io ๋ชจ๋“ˆ ๋“ฑ์ด ์ถ”๊ฐ€๋๋‹ค.
๊ทธ๋ฆฌ๊ณ  pkg ๋ถ™๋Š” ๊ฒƒ๋„ ๊ฑฐ์Šฌ๋ ค์„œ ๋‹ค ๋‚ ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฃจํŠธ ๊ฒฝ๋กœ์— ๋‹ค ๋•Œ๋ ค๋ฐ•์•˜๋‹ค.



์„ค์น˜

์„ค์น˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ , ๋น ๋ฅด๋‹ค. ๋””ํŽœ๋˜์‹œ์— ๋ญ๊ฐ€ ์žˆ์ง€๋„ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

go get github.com/myyrakle/gost@v0.4.0

๊ทธ๋ฆฌ๊ณ  importํ•ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค.




ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๋ž˜ํผ

ํŠธ๋ ˆ์ž‡๋“ค์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธํƒ€์ž…๋“ค์„ ์ฃ„๋‹ค ๋ž˜ํ•‘ํ•ด๋†จ๋‹ค.
๊ณ ์ŠคํŠธ์˜ ํ˜œํƒ์„ ๋ˆ„๋ฆฌ๋ ค๋ฉด ๋Œ€์‹  ์ด๊ฒƒ๋“ค์„ ์จ์•ผ ํ•œ๋‹ค.




ํŠธ๋ ˆ์ž‡

Rust์˜ ํŠธ๋ ˆ์ž‡๋“ค์„ ์ตœ๋Œ€ํ•œ ์ด์‹ํ–ˆ๋‹ค.

์‚ฌ์น™์—ฐ์‚ฐ๋“ค๋„ ์žˆ๊ณ  (์•„์ง ๊ธฐ๋ณธํƒ€์ž…๋“ค์— ๋Œ€ํ•ด ๊ตฌํ˜„์ด ๋˜์ง€ ์•Š์Œ)


๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ •์˜ํ•˜๋Š” clone๋„ ์žˆ๋‹ค.


์˜ค๋”๋ง๋„ ์žˆ๋‹ค. ์ด๊ฑธ๋กœ ์ •๋ ฌ์„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ด๋‹ค. (์•„์ง ์˜๋ฏธ์žˆ๊ฒŒ ์“ฐ๊ณ ์žˆ์ง„ ์•Š๋‹ค.)


์ถœ๋ ฅํ• ๋•Œ ์“ธ Display๋‚˜ Debug ํŠธ๋ ˆ์ž‡๋„ ์žˆ๋‹ค.
์ด๊ฑด ์ง€๊ธˆ ๊ธฐ๋ฐ˜์šฉ์œผ ์ž˜ ์“ฐ๊ณ  ์žˆ๋‹ค.




Option๊ณผ Result

Go์˜ ๊ฑฐ์ง€๊ฐ™์€ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์™„ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‚˜๋“œ ํƒ€์ž…์ด๋‹ค.
์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ์‹ธ์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด

ํƒ€์ž…์„ ํ†ตํ•ด ์–ด๋А์ •๋„ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œํ•˜๊ณ  ๊ฐ€์‹œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ž์ฒด์ ์ธ ์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด rust ์Šคํƒ€์ผ์˜ ์ถœ๋ ฅ ํฌ๋งท์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„์ง ๊ธฐ๋Šฅ์ด ์™„์ „ํ•˜์ง€๋Š” ์•Š๋‹ค.




์ž๋ฃŒ๊ตฌ์กฐ: Vec

๋ฒกํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค. ์‚ฌ์‹ค์ƒ ๋‚ด๋ถ€ ๊ตฌํ˜„์€ ์Šฌ๋ผ์ด์Šค์ด๊ธด ํ•˜๋‹ค.
๋Œ€์‹  ๋ฉ”์„œ๋“œ์˜ ์ œ๊ณต์„ ํ†ตํ•ด ์ข€๋” ํ’์กฑํ•œ ์‚ฌ์šฉ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.




Iterator: Vec

iterator๋„ ์žˆ๋‹ค. ์•„์ง ๊ทธ๋ฆฌ ์™„์ „ํ•˜์ง„ ์•Š์ง€๋งŒ, ๋Œ€์ถฉ ์“ธ ์ˆ˜๋Š” ์žˆ๊ฒŒ ํ•ด๋†จ๋‹ค.




HashMap

๋‚ด๋ถ€์ ์œผ๋กœ๋Š” map์— ๋Œ€ํ•œ ๋‹จ์ˆœ ๋ž˜ํผ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ํ‰๋ฒ”ํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค.




fs ๋ชจ๋“ˆ

ํŒŒ์ผ ์ž…์ถœ๋ ฅ์— ๋Œ€ํ•œ ๋ชจ๋“ˆ๋„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.
ํŒŒ์ผ์„ ์ ๋‹นํžˆ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ 

ํŒŒ์ผ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

์ด์™ธ์—๋„ CreateDir, Remove, Copy ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

์ž์„ธํ•œ ๊ฒƒ์€ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
https://pkg.go.dev/github.com/myyrakle/gost

์•„์ง ๋งŒ๋“ค๊ฒŒ ๋งŽ๋‹ค.