如何在Rust中将u8转换为&[u8]? [重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我很新,在Rust中迷失了一点。

我想将键和值添加到具有put函数的数据存储中,该函数需要两个字节的字符串文字:

batch.put(b"foxi", b"maxi");

我生成了一堆这些k-v对:

for _ in 1..1000000 {
    let mut ivec = Vec::new();
    let s1: u8 = rng.gen();
    let s2: u8 = rng.gen();
    ivec.push(s1);
    ivec.push(s2);
    debug!("Adding key: {} and value {}", s1, s2);
    vec.push(ivec);
}
let _ = database::write(db, vec);

我有一个尝试添加它们的fn:

pub fn write(db: DB, vec: Vec<Vec<u8>>) {
    let batch = WriteBatch::new();
    for v in vec {
        batch.put(v[0], v[1]);
    }
    db.write(&batch).unwrap();
}

当我尝试编译这个时,我得到:

error[E0308]: mismatched types
  --> src/database.rs:17:19
   |
17 |         batch.put(v[0], v[1]);
   |                   ^^^^ expected &[u8], found u8
   |
   = note: expected type `&[u8]`
              found type `u8`

error[E0308]: mismatched types
  --> src/database.rs:17:25
   |
17 |         batch.put(v[0], v[1]);
   |                         ^^^^ expected &[u8], found u8
   |
   = note: expected type `&[u8]`
              found type `u8`

我现在用借阅检查器打了一段时间,但是我无法让它运转起来。从u8s获取字节文字字符串的最佳方法是什么?

rust
1个回答
0
投票

以下作品:

batch.put(&v[0].as_bytes(), &v[1].as_bytes())
© www.soinside.com 2019 - 2024. All rights reserved.