mirror of
https://github.com/l1npengtul/nokhwa.git
synced 2026-07-04 10:37:26 +00:00
fix compile errors except for ffmpeg
This commit is contained in:
@@ -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 => {
|
||||
|
||||
@@ -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,5 +1,5 @@
|
||||
#![cfg_attr(not(test), no_std)]
|
||||
#[warn(clippy::pedantic)]
|
||||
#![warn(clippy::pedantic)]
|
||||
|
||||
pub mod interweave;
|
||||
pub mod duplicate;
|
||||
|
||||
Reference in New Issue
Block a user