mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-22 00:00:03 +03:00
rust: BkeySC now has correct lifetime on BtreeIter
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
8a7e3344fe
commit
d5b0d0892a
@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
use crate::c;
|
use crate::c;
|
||||||
use crate::fs::Fs;
|
use crate::fs::Fs;
|
||||||
|
use crate::btree::BtreeIter;
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
use std::marker::PhantomData;
|
||||||
use std::mem::transmute;
|
use std::mem::transmute;
|
||||||
|
|
||||||
pub struct BkeySC<'a> {
|
pub struct BkeySC<'a> {
|
||||||
pub k: &'a c::bkey,
|
pub k: &'a c::bkey,
|
||||||
pub v: &'a c::bch_val,
|
pub v: &'a c::bch_val,
|
||||||
|
pub(crate) iter: PhantomData<&'a mut BtreeIter<'a>>
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum BkeyValC<'a> {
|
pub enum BkeyValC<'a> {
|
||||||
|
@ -76,7 +76,7 @@ impl<'t> BtreeIter<'t> {
|
|||||||
unsafe {
|
unsafe {
|
||||||
let k = c::bch2_btree_iter_peek_upto(&mut self.raw, end);
|
let k = c::bch2_btree_iter_peek_upto(&mut self.raw, end);
|
||||||
errptr_to_result_c(k.k)
|
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);
|
let k = c::bch2_btree_iter_peek_and_restart_outlined(&mut self.raw);
|
||||||
|
|
||||||
errptr_to_result_c(k.k)
|
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 } )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user