
#[async_trait]
impl<'a> Executor for ExecIndexOnlyScan<'a> {
    async fn next(&mut self) -> Result<Option<Tuple>, buffer::Error> {
        let (skey_bytes, pkey_bytes) = match self.index_iter.prev().await? {
            Some(pair) => pair,
            None => return Ok(None),
        };
        let mut skey = vec![];
        tuple::decode(&skey_bytes, &mut skey);
        if !(self.while_cond)(&skey) {
            return Ok(None);
        }