pub fn extend_with_proof(
        &mut self,
        entries: &[TreeEntry],
        read_keys: &[H256],
    ) -> anyhow::Result<(BatchOutput, BatchTreeProof)> {
        let (output, proof) = self.extend_inner(entries, Some(read_keys))?;
        Ok((output, proof.unwrap()))
    }
Same as [Self::extend()`], but also provides a Merkle proof of the update.
core/lib/zk_os_merkle_tree/src/lib.rs