<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      記一起rust懸垂引用解決

             最初要寫一段從redis的hash獲取json字符串,轉化為結構體,代碼邏輯如下

      use redis::{Client, Commands, Connection, Iter};
      use serde::{Deserialize, Serialize};
      
      const HASH_KEY: &str = "rust_test_hash_key";
      
      #[derive(Serialize, Deserialize, Debug)]
      struct A<'a> {
          id: &'a str,
      }
      
      struct Logic {
          redis: Client,
      }
      
      impl Logic {
          fn new() -> Self {
              let redis_client =
                  Client::open("redis://@127.0.0.1:6378/10").unwrap();
              Logic {
                  redis: redis_client,
              }
          }
      
          fn get_redis_conn(&self) -> Connection {
              self.redis.get_connection().unwrap()
          }
      
          fn store_as(&self) {
              let mut conn = self.get_redis_conn();
              let field = "field_name";
              let a = A { id: "id0" };
              let value = serde_json::to_string(&a).unwrap();
              let _: () = conn.hset(HASH_KEY, field, value).unwrap();
          }
      
          fn load_as(&self) -> Vec<A> {
              let mut conn = self.get_redis_conn();
              let results: Iter<(String, String)> = conn.hscan(HASH_KEY).unwrap();
              let mut vs = Vec::new();
              for (_k, v) in results {
                  let a: A = serde_json::from_str(&v).unwrap();
                  vs.push(a);
              }
              vs
          }
      
          fn clear_as(&self) {
              let mut conn = self.get_redis_conn();
              let _: () = conn.del(HASH_KEY).unwrap();
          }
      }
      
      fn main() {
          let logic = Logic::new();
          logic.store_as();
          let a_s = logic.load_as();
          println!("a_s is {:?}", a_s);
          logic.clear_as();
      }

      結果運行報錯如下

      error[E0515]: cannot return value referencing local variable `v`
          --> src/main.rs:2051:9
           |
      2048 |             let a: A = serde_json::from_str(&v).unwrap();
           |                                             -- `v` is borrowed here
      ...
      2051 |         vs
           |         ^^ returns a value referencing data owned by the current function

      很明顯是懸垂引用問題

       

      修改后的代碼如下

      use redis::{Client, Commands, Connection, Iter};
      use serde::{Deserialize, Serialize};
      
      const HASH_KEY: &str = "rust_test_hash_key";
      
      #[derive(Serialize, Deserialize, Debug)]
      struct A<'a> {
          id: &'a str,
      }
      
      struct Logic {
          redis: Client,
      }
      
      impl Logic {
          fn new() -> Self {
              let redis_client =
                  Client::open("redis://@127.0.0.1:6378/10").unwrap();
              Logic {
                  redis: redis_client,
              }
          }
      
          fn get_redis_conn(&self) -> Connection {
              self.redis.get_connection().unwrap()
          }
      
          fn store_as(&self) {
              let mut conn = self.get_redis_conn();
              let field = "field_name";
              let a = A { id: "id0" };
              let value = serde_json::to_string(&a).unwrap();
              let _: () = conn.hset(HASH_KEY, field, value).unwrap();
          }
      
          fn load_a_strs(&self) -> Vec<String> {
              let mut conn = self.get_redis_conn();
              let results: Iter<(String, String)> = conn.hscan(HASH_KEY).unwrap();
              let mut vs = Vec::new();
              for (_k, v) in results {
                  vs.push(v);
              }
              vs
          }
      
          fn strs_as(a_strs: &Vec<String>) -> Vec<A> {
              let mut a_s = Vec::with_capacity(a_strs.len());
              for b in a_strs {
                  let a: A = serde_json::from_str(b).unwrap();
                  a_s.push(a);
              }
              a_s
          }
      
          fn clear_as(&self) {
              let mut conn = self.get_redis_conn();
              let _: () = conn.del(HASH_KEY).unwrap();
          }
      }
      
      
      fn main() {
          let logic = Logic::new();
          logic.store_as();
          let b_s = logic.load_a_strs();
          let a_s = Logic::strs_as(&b_s);
          println!("a_s is {:?}", a_s);
          logic.clear_as();
      }

       

      posted @ 2024-02-01 13:15  ALXPS  閱讀(27)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一本高清码二区三区不卡| 久久久亚洲欧洲日产国码二区| 肥城市| 国产乱久久亚洲国产精品| 国产成人亚洲综合91精品| 国产av剧情无码精品色午夜| 国产乱码1卡二卡3卡四卡5| 综合亚洲网| 亚洲高清成人av在线| 久久综合国产色美利坚| 美女自卫慰黄网站| 国产浮力第一页草草影院| 精品久久久久久国产| 亚洲春色在线视频| 麻豆妓女爽爽一区二区三| 成人国产亚洲精品一区二区| 亚洲精品宾馆在线精品酒店| 欧美疯狂xxxxxbbbbb| 热久久这里只有精品国产| 国产999精品2卡3卡4卡| 久久99精品久久久久久不卡| 国产午夜福利小视频在线| 亚洲国产精品一区在线看| 任我爽精品视频在线播放| 国产女人喷潮视频免费| 国产精品自在自线免费观看| 亚洲精品日韩在线丰满| 又爽又黄又无遮挡的激情视频| 中文字幕在线视频不卡一区二区| 鲁丝一区二区三区免费| 玩弄放荡人妻少妇系列 | 色偷偷亚洲男人的天堂| 日本一区二区三区后入式| 亚洲一区二区精品动漫| 巨熟乳波霸若妻在线播放| 亚洲自在精品网久久一区| 国产愉拍91九色国产愉拍| 成人午夜av在线播放| 亚洲精品国偷自产在线| 纯肉高h啪动漫| 最近中文国语字幕在线播放|