COW ๐ in Rust ๐ฆ
clone-on-write

Contents
dfinity/ic ์ฝ๋๋ฅผ ๋ณด๋ค ์ดํด๋์ง ์๋ ์ฝ๋๋ค์ด ์์ด, Cow๋ฅผ ์ ์ฌ์ฉํ๋์ง ์ ๋ฆฌํ๋ ค ํฉ๋๋ค.
TL;DR
|
|
-
Cow์ ์ฝ์ด ๋ป์ clone-on-write๋ก read๊ฐ ์๋ write์ clone์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
-
Cow๋ Borrowed, Owned๋ฅผ ๊ตฌ๋ถํ๋ enum ํ์ ์ ๋๋ค.
-
์ ๋๋ฆญ
B
๋ ‘a์, ToOwned, ?Sized๋ก ๋ฐ์ด๋ ๋์ด์์ต๋๋ค. -
ToOwned
trait- borrowed ๋ฐ์ดํฐ์
Clone
์ ๋ํ ์ผ๋ฐํ - clone์์ผ์, Owned ํ์ ์ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
- borrowed ๋ฐ์ดํฐ์
-
?Sized
trait- ์ปดํ์ผ ํ์์ constant size๋ฅผ ์ ์ ์๋ ํ์
- ๋ชจ๋ ํ์
ํ๋ผ๋ฏธํฐ๋ implicit bound๋ก
Sized
๋ฅผ ๋ณด์ ํ๊ณ ์๋ค. ?
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด bound๋ฅผ remove์์ผ์ค ์ ์๋ค.
์ฆ Cow๋ Borrowed
๋๋ Owned
๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค๋ฉด &str, Stringํ์
๋ชจ๋ ์ฌ์ฉํ๊ธธ ์ํ๋ ๊ฒฝ์ฐ.
|
|
Cow๋ฅผ ์ฌ์ฉํ๋ ์ด์
1. A function rarely modifying the data
๋ถํ์ํ๊ฒ clone์ ํ๊ฒ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ง๊ธฐ ์ํด์ cow๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
FYI to_string()
์ ๋ณต์ฌ๋ณธ์ ์ ๋ฌํ๋ค.
before
|
|
after
|
|