国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Rust系列(四) trait備忘錄(持續(xù)更新)

這篇具有很好參考價值的文章主要介紹了Rust系列(四) trait備忘錄(持續(xù)更新)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

上一篇:Rust系列(三) 類型系統(tǒng)與trait

基于官方文檔進行簡單學習記錄,保證所有示例是可運行的基本單元。測試rust程序除了使用官方的playground之外,還可以通過定義[[example]]來運行程序。

1. Deref

用于不可變對象的解引用操作,語法類似*v
官方文檔:https://doc.rust-lang.org/std/ops/trait.Deref.html
trait源碼

pub trait Deref {
    type Target: ?Sized;

    // Required method
    fn deref(&self) -> &Self::Target;
}

備注:DerefDerefMut 設計之初就是為了適配和簡化智能指針而設計的,應該避免為非智能指針實現(xiàn)相關trait,以造成混淆。
Deref coercion
假設類型T實現(xiàn)了Deref<Target = U> trait,有一個類型為T的變量x,有下面幾條規(guī)則成立:

  • *x等價于*Deref::deref(&x)
  • 類型T必須實現(xiàn)所有類型U的不可變方法

應用示例文章來源地址http://www.zghlxwxcb.cn/news/detail-620707.html

use std::ops::Deref;

struct DerefExample<T> {
    value: T,
}

impl<T> Deref for DerefExample<T> {
    type Target = T;

    fn deref(&self) -> &Self::Target {
        &self.value
    }
}

fn main() {
    let x: DerefExample::<char> = DerefExample { value: 'a' };
    let target: char = *x;
    // a a
    println!("{} {}", target, 'a');
}

2. DerefMut

用于可變對象的解引用操作,語法類似*v = 1
官方文檔:https://doc.rust-lang.org/std/ops/trait.DerefMut.html
trait源碼

pub trait DerefMut: Deref {
    // Required method
    fn deref_mut(&mut self) -> &mut Self::Target;
}

DerefMut coercion
假設類型T實現(xiàn)了DerefMut<Target = U> trait,有一個類型為T的變量x,有下面幾條規(guī)則成立:

  • *x等價于*DerefMut::deref_mut(&mut x)
  • 類型T必須實現(xiàn)所有類型U的可變和不可變方法

應用示例

use std::ops::{Deref, DerefMut};

struct DerefMutExample<T> {
    value: T,
}

impl<T> Deref for DerefMutExample<T> {
    type Target = T;

    fn deref(&self) -> &Self::Target {
        &self.value
    }
}

impl<T> DerefMut for DerefMutExample<T> {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.value
    }
}

fn main() {
    let mut x: DerefMutExample::<char> = DerefMutExample { value: 'a' };
    // a a
    println!("{} {}", *x, 'a');
    *x = 'b';
    // b a
    println!("{} {}", *x, 'a');
}

到了這里,關于Rust系列(四) trait備忘錄(持續(xù)更新)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 手機備忘錄如何批量導出來,備忘錄整體導出方法介紹

    手機備忘錄如何批量導出來,備忘錄整體導出方法介紹

    手機備忘錄如何批量導出來?一些品牌的手機上有自帶的備忘錄,大多手機自帶備忘錄都不支持直接批量導出,只能通過分享或復制類的功能逐條導出,手動進行整理。 除了手機自帶備忘錄,一些朋友會選擇在自己的手機上使用云便簽備忘錄,不僅可以在線添加備忘錄提醒事

    2024年02月16日
    瀏覽(27)
  • 蘋果手機備忘錄如何導入新手機?手機備忘錄怎么轉移?

    蘋果手機備忘錄如何導入新手機?手機備忘錄怎么轉移?

    一般來說,大多數(shù)手機用戶更換手機的頻率是3—5年,在一部手機使用了幾年之后,就會出現(xiàn)內存不足、系統(tǒng)卡頓、電池續(xù)航時間較短等問題,這時候就需要更換新的手機了。有不少蘋果手機用戶在更換新手機的時候,都很發(fā)愁一個問題,這就是手機備忘錄如何導入新手機。

    2024年01月25日
    瀏覽(18)
  • 備忘錄模式

    在不破壞封裝性的前提下,捕獲一個對象的內部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復到原先保存的狀態(tài)。 1.1 撤銷操作: 例如,在文本編輯器中,當我們對文本進行修改時,可以使用備忘錄模式來實現(xiàn)撤銷操作。每次對文本進行修改時,就保存當

    2024年02月03日
    瀏覽(21)
  • 博文備忘錄

    博文備忘錄

    https://blog.csdn.net/ZQ_KING/article/details/80320080 (鏈接層)MAC地址——ARP協(xié)議 (網(wǎng)絡層)IP地址——IP協(xié)議 (傳輸層)端口——UDP協(xié)議、TCP協(xié)議 (應用層)域名——HTTP協(xié)議、HTTPS協(xié)議 https://github.com/xiaomuzhu/front-end-interview/blob/master/docs/guide/http.md (http) https://github.com/xiaomuzhu/front-

    2024年02月08日
    瀏覽(37)
  • 備忘錄模式(Memento)

    備忘錄模式(Memento)

    備忘錄模式是一種行為設計模式,在不破壞封裝性的前提下,允許在不暴露對象實現(xiàn)細節(jié)的情況下保存和恢復對象之前的狀態(tài)。 一個備忘錄(memento)是一個對象,它存儲另一個對象在某個瞬間的內部狀態(tài),而后者稱為備忘錄的原發(fā)器(originator)。當需要設置原發(fā)器的檢查點時,取

    2024年02月13日
    瀏覽(23)
  • stata備忘錄

    stata備忘錄

    1. 畫圖 (1)時間趨勢圖 等價命令 字體大小 option 字體大小option description zero no size whatsoever, vanishingly small minuscule smallest quarter_tiny third_tiny half_tiny tiny vsmall small medsmall medium medlarge large vlarge huge vhuge largest tenth one-tenth the size of the graph quarter one-fourth the size of the graph third one-thi

    2024年02月03日
    瀏覽(27)
  • 《設計模式》備忘錄模式

    《設計模式》備忘錄模式

    定義 : 備忘錄模式又稱為快照模式或者令牌模式, 在不破壞封裝性的前提下,捕獲一個對象的內部狀態(tài),并在該對象之外保存這個狀態(tài),這樣可以在以后將對象恢復到原先保存的狀態(tài)。 屬性 行為型 模式。 備忘錄模式的角色組成 : Originator(發(fā)起人) :負責創(chuàng)建一個 Memento

    2024年02月06日
    瀏覽(32)
  • 【設計模式】備忘錄模式

    【設計模式】備忘錄模式

    主頁傳送門: ?? 傳送 ???????備忘錄(Memento Pattern)模式又叫做快照模式(Snapshot Pattern)或Token模式,是對象的行為模式。。其定義如下: Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later. ???????即:在不破壞封

    2024年02月07日
    瀏覽(25)
  • 設計模式(十八)備忘錄

    設計模式(十八)備忘錄

    在不破壞封裝的前提下,捕獲一個對象的內部狀態(tài),并在該對象之外保存這個狀態(tài),這樣就可以在以后將對象恢復到原先保存的狀態(tài)。備忘錄模式是一種對象行為型模式,其別名為標記(Token)模式。 備忘錄模式的核心在于備忘錄類以及用于管理備忘錄的負責人類的設計,包

    2024年02月04日
    瀏覽(24)
  • 行為型模式-備忘錄模式

    描述 通過封裝一個對象的狀態(tài),并將其保存在外部,從而實現(xiàn)了該對象狀態(tài)的備份和恢復。這種方式可以提高代碼的靈活性和可維護性,同時也能夠減少代碼對于狀態(tài)存儲的依賴。 適用環(huán)境 當需要保存和恢復對象的狀態(tài)時使用;當直接訪問對象的成員變量或方法不利于代碼

    2023年04月10日
    瀏覽(81)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包