Z5WCQLAHVRIRZRE6K3AO6IP7Y5F4AMAMA6Q7U4ANGHA5TUCNOC2QC
HL3B7CBVIFOE5UDQ4PFYFLTSHWY6ITXMWSLNKFAI7QQHLD5GRF2AC
IOHM3NIST5FMQDSRXXXOBNK2DKQKHDFB4YWJWRB6B2ROWVB7W75QC
VXKHXMQLNMD7OG4CKSZTX75WMHYTGXJG7AL7YTQBMI2WJ3GQC6JQC
use crate::buffer::{BufferGet, EventBuffer, MixedEventBuffer, State};
use crate::buffer::{Buffer, EventBuffer, MixedEventBuffer, State};
fn new<F, T>(buffer: B, f: F) -> Self
fn new<F>(buffer: B, f: F) -> Self
B: BufferGet<T> + Send + 'static, F: Fn(T) -> () + Send + 'static, T: Send + 'static,
B: BufferGet<T> + Send + 'static,
F: Fn(T) -> () + Send + 'static,
T: Send + 'static,
B: Buffer + Send + 'static, F: Fn(B::Data) -> () + Send + 'static,
B: Buffer + Send + 'static,
F: Fn(B::Data) -> () + Send + 'static,
pub trait Buffer { type Data;
pub trait Buffer {
type Data;
pub trait BufferGet<T> { fn get(&mut self) -> State<T>;
pub trait BufferGet<T> {
fn get(&mut self) -> State<T>;
fn get(&mut self) -> State<Self::Data>;
impl<T> BufferGet<T> for EventBuffer<T> {
impl<T> Buffer for EventBuffer<T> { type Data = T;
impl<T> Buffer for EventBuffer<T> {
type Data = T;
impl<T: Eq> BufferGet<T> for MixedEventBuffer<T> {
impl<T: Eq> Buffer for MixedEventBuffer<T> { type Data = T;
impl<T: Eq> Buffer for MixedEventBuffer<T> {