pub fn apply_compaction_result(
        &self,
        _snapshot: &LsmStorageState,
        _task: &SimpleLeveledCompactionTask,
        _output: &[usize],
    ) -> (LsmStorageState, Vec<usize>) {
        unimplemented!()
    }
Apply the compaction result.

The compactor will call this function with the compaction task and the list of SST ids generated. This function applies the
result and generates a new LSM state. The functions should only change `l0_sstables` and `levels` without changing memtables
and `sstables` hash map. Though there should only be one thread running compaction jobs, you should think about the case
where an L0 SST gets flushed while the compactor generates new SSTs, and with that in mind, you should do some sanity checks
in your implementation.
mini-lsm-starter/src/compact/simple_leveled.rs