fix compile errors except for ffmpeg

This commit is contained in:
l1npengtul
2025-09-13 22:53:49 +09:00
parent 6db4a46e60
commit 5319e517d9
13 changed files with 279 additions and 410 deletions
+22 -28
View File
@@ -44,45 +44,39 @@ impl<I, const MULTIPLIER: usize> Iterator for DuplicateConst<I, MULTIPLIER> wher
fn next(&mut self) -> Option<Self::Item> {
match self.state {
DuplicateConstState::Started => {
match self.iter.next() {
Some(i) => {
if MULTIPLIER <= 1 {
self.state = DuplicateConstState::EmitReal;
} else {
self.state = DuplicateConstState::EmitDupe;
}
self.last_iter_item = Some(i.clone());
Some(i)
}
None => {
self.state = DuplicateConstState::Finished;
None
if let Some(i) = self.iter.next() {
if MULTIPLIER <= 1 {
self.state = DuplicateConstState::EmitReal;
} else {
self.state = DuplicateConstState::EmitDupe;
}
self.last_iter_item = Some(i.clone());
Some(i)
} else {
self.state = DuplicateConstState::Finished;
None
}
}
DuplicateConstState::EmitDupe => {
self.running_count = self.running_count.saturating_sub(1);
if self.running_count <= 0 {
if self.running_count == 0 {
self.state = DuplicateConstState::EmitReal;
}
self.last_iter_item.clone()
}
DuplicateConstState::EmitReal => {
match self.iter.next() {
Some(i) => {
self.last_iter_item = Some(i.clone());
self.running_count = MULTIPLIER.saturating_sub(1);
if MULTIPLIER <= 1 {
self.state = DuplicateConstState::EmitReal;
} else {
self.state = DuplicateConstState::EmitDupe;
}
Some(i)
}
None => {
self.state = DuplicateConstState::Finished;
None
if let Some(i) = self.iter.next() {
self.last_iter_item = Some(i.clone());
self.running_count = MULTIPLIER.saturating_sub(1);
if MULTIPLIER <= 1 {
self.state = DuplicateConstState::EmitReal;
} else {
self.state = DuplicateConstState::EmitDupe;
}
Some(i)
} else {
self.state = DuplicateConstState::Finished;
None
}
}
DuplicateConstState::Finished => {
+14 -17
View File
@@ -58,23 +58,20 @@ impl<I, const PER: usize> Iterator for Interweave<I, PER> where I: Iterator, <I
}
InterweaveState::EmitReal => {
self.count = self.count.saturating_sub(1);
match self.iter.next() {
Some(i) => {
if self.count <= 0 {
self.state = InterweaveState::EmitFake;
} else {
self.state = InterweaveState::EmitReal;
}
self.prev_state = InterweaveState::EmitReal;
Some(i)
if let Some(i) = self.iter.next() {
if self.count == 0 {
self.state = InterweaveState::EmitFake;
} else {
self.state = InterweaveState::EmitReal;
}
None => {
self.state = InterweaveState::Finished;
if self.emit_last && self.prev_state != InterweaveState::EmitFake {
Some(self.element.clone())
} else {
None
}
self.prev_state = InterweaveState::EmitReal;
Some(i)
} else {
self.state = InterweaveState::Finished;
if self.emit_last && self.prev_state != InterweaveState::EmitFake {
Some(self.element.clone())
} else {
None
}
}
}
@@ -91,7 +88,7 @@ impl<I, const PER: usize> Iterator for Interweave<I, PER> where I: Iterator, <I
return (lower * 2, upper.map(|u| u * 2))
}
let last = if self.emit_last { 1 } else { 0 };
let last = usize::from(self.emit_last);
let new_lower = lower + (lower / PER) + last;
let new_upper = upper.map(|u| { u + (u / PER) + last });
(new_lower, new_upper)
+1 -1
View File
@@ -1,5 +1,5 @@
#![cfg_attr(not(test), no_std)]
#[warn(clippy::pedantic)]
#![warn(clippy::pedantic)]
pub mod interweave;
pub mod duplicate;