// Copyright (c) 2022-2025 Alex Chi Z // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #![allow(unused_variables)] // TODO(you): remove this lint after implementing this mod #![allow(dead_code)] // TODO(you): remove this lint after implementing this mod use anyhow::Result; use super::StorageIterator; /// Merges two iterators of different types into one. If the two iterators have the same key, only /// produce the key once and prefer the entry from A. pub struct TwoMergeIterator { a: A, b: B, // Add fields as need } impl< A: 'static + StorageIterator, B: 'static + for<'a> StorageIterator = A::KeyType<'a>>, > TwoMergeIterator { pub fn create(a: A, b: B) -> Result { unimplemented!() } } impl< A: 'static + StorageIterator, B: 'static + for<'a> StorageIterator = A::KeyType<'a>>, > StorageIterator for TwoMergeIterator { type KeyType<'a> = A::KeyType<'a>; fn key(&self) -> Self::KeyType<'_> { unimplemented!() } fn value(&self) -> &[u8] { unimplemented!() } fn is_valid(&self) -> bool { unimplemented!() } fn next(&mut self) -> Result<()> { unimplemented!() } }