AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Rust模式:使用Box::leak創建一個&'static引用

來源: 責編: 時間:2024-07-10 17:58:46 737觀看
導讀假設你有這個Config結構體,它在程序啟動時加載一次,然后在整個生命周期中都是不可變的。問題是,Config需要被程序的許多部分訪問:struct UsersService { config: Config,}struct OrdersService { config: Config,}/

假設你有這個Config結構體,它在程序啟動時加載一次,然后在整個生命周期中都是不可變的。KRF28資訊網——每日最新資訊28at.com

問題是,Config需要被程序的許多部分訪問:KRF28資訊網——每日最新資訊28at.com

struct UsersService {    config: Config,}struct OrdersService {    config: Config,}// ...let config = config::load()?;let users_service = UsersService::new(config.clone());let orders_service = OrdersService::new(config.clone());

在上面的代碼中,Config被嵌入到兩個結構體中,這可能不是理想的,因為這兩個結構體將隨著Config的大小而增長,而它們可能只需要訪問1或2個字段。KRF28資訊網——每日最新資訊28at.com

一個好的選擇是使用智能指針:Rc或Arc,這樣我們就可以共享Config的引用。因為我們的程序是多線程的(就像現在的大多數程序一樣),我們將使用Arc指針,這樣我們的結構就可以在線程之間發送:KRF28資訊網——每日最新資訊28at.com

struct UsersService {    config: Arc<Config>,}struct OrdersService {    config: Arc<Config>,}// ...let config = Arc::new(config::load()?);let users_service = UsersService::new(config.clone());let orders_service = OrdersService::new(config.clone());

這里,UsersService和OrdersService只嵌入了一個Arc指針,這只增加了8個字節。KRF28資訊網——每日最新資訊28at.com

是否能做得更好呢?對于在程序的整個生命周期中都是不可變的數據,最好使用&'static引用。KRF28資訊網——每日最新資訊28at.com

但是如何創建&'static引用的Config,在運行時加載?KRF28資訊網——每日最新資訊28at.com

請使用Box::leak,它在堆上分配內部結構體(這里是Config),并將引用“泄漏”到'static的生命周期。KRF28資訊網——每日最新資訊28at.com

struct UsersService {    config: Arc<Config>,}struct OrdersService {    config: Arc<Config>,}// ...let config = Arc::new(config::load()?);let users_service = UsersService::new(config.clone());let orders_service = OrdersService::new(config.clone());

代碼仍然與我們的原始代碼非常相似,但是現在我們的UsersService和OrdersService只嵌入一個指針大小的引用,并且運行時開銷正好為0。KRF28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-100192-0.htmlRust模式:使用Box::leak創建一個&amp;'static引用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Stream很好,Map很酷,但答應我別用toMap()

下一篇: Vue3 中異步接口請求是放在組件內部,還是放在Pinia中?

標簽:
  • 熱門焦點
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 騰訊蓋樓,字節拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己&ldquo;當家&rdquo;的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 2299元起!iQOO Pad開啟預售:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
Top