rust: BkeySC now has correct lifetime on BtreeIter

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2023-03-02 22:01:00 -05:00
parent 8a7e3344fe
commit d5b0d0892a
2 changed files with 7 additions and 4 deletions

View File

@ -2,13 +2,16 @@
use crate::c;
use crate::fs::Fs;
use crate::btree::BtreeIter;
use std::ffi::CStr;
use std::fmt;
use std::marker::PhantomData;
use std::mem::transmute;
pub struct BkeySC<'a> {
pub k: &'a c::bkey,
pub v: &'a c::bch_val,
pub k: &'a c::bkey,
pub v: &'a c::bch_val,
pub(crate) iter: PhantomData<&'a mut BtreeIter<'a>>
}
pub enum BkeyValC<'a> {

View File

@ -76,7 +76,7 @@ impl<'t> BtreeIter<'t> {
unsafe {
let k = c::bch2_btree_iter_peek_upto(&mut self.raw, end);
errptr_to_result_c(k.k)
.map(|_| if !k.k.is_null() { Some(BkeySC { k: &*k.k, v: &*k.v }) } else { None } )
.map(|_| if !k.k.is_null() { Some(BkeySC { k: &*k.k, v: &*k.v, iter: PhantomData }) } else { None } )
}
}
@ -89,7 +89,7 @@ impl<'t> BtreeIter<'t> {
let k = c::bch2_btree_iter_peek_and_restart_outlined(&mut self.raw);
errptr_to_result_c(k.k)
.map(|_| if !k.k.is_null() { Some(BkeySC{ k: &*k.k, v: &*k.v }) } else { None } )
.map(|_| if !k.k.is_null() { Some(BkeySC{ k: &*k.k, v: &*k.v, iter: PhantomData }) } else { None } )
}
}