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

时间:2019-04-25 22:48:23

标签: rust

我是新手,迷上了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获得字节文字字符串的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

以下作品:

batch.put(&v[0].as_bytes(), &v[1].as_bytes())