rust的幾種變量傳遞語義

  • Borrow
  • Move
  • Copy
  • Clone

以一個具體的例子來講明這幾種不一樣。 小明是巧克力倉庫管理員。他有一個門卡,能夠用來開倉庫的門,而且門卡上印有管理員信息;小李是小明的朋友。工作

Borrow

一天,小李找小明說,你把倉庫的門卡借給我唄,小明說:「行。可是你不能把卡上的信息改了」。小李說好。小李用完了,而後還給了小明。ps

mut borrow

有一天,小明發現卡上的名字印錯了。因而他跟小李說,你幫我把卡上的名字改正確唄。小李說好。 因而,小明把卡片借給了小李,小李幫小明把卡片上的名字改好,而後小李把卡片還給了小明。管理

Move

小明因爲工做表現突出,領導決定讓他管葡萄乾的倉庫,再也不管巧克力倉庫了,而且派小李接替小明的工做。 因而,小明把巧克力倉庫的門卡交給小李。今後,小明再也不擁有巧克力倉庫的門卡,小李成了巧克力倉庫門卡的擁有者。

Copy

最近吃巧克力的人忽然變多,倉庫的工做一會兒忙起來。小李一我的管不過來。 因而領導讓小明來幫忙,也就是小明和小李一同管理巧克力倉庫。但門卡只有一張,兩我的用起來很不方便。 因而照着原來的門卡,製做了一張如出一轍的門卡給了小明。今後,兩我的每人都有一張門卡了。 固然,小明拿到卡就能夠把卡片上的名字改爲了本身的。

ps: 此狀況暫時不考慮用門卡開倉庫門的狀況。

Clone

吃巧克力的人愈來愈多,一個倉庫已經應付不來了。領導決定新建一個和原來同樣的巧克力倉庫,讓小李管舊倉庫小明管新倉庫。 因而給小明發了一張新倉庫的門卡。

相關文章
相關標籤/搜索