pidcat 0.2.1

An adb logcat wrapper and filters
Documentation
use crate::filter::Filter;
use crate::log::Log;
use async_trait::async_trait;

pub(crate) struct BufferFilter {
    buffers: Vec<String>,
    all: bool,
}

impl BufferFilter {
    #[allow(dead_code)]
    pub(crate) fn new(buffers: Vec<String>) -> Self {
        let mut s = Self {
            buffers,
            all: false,
        };

        s.all = s.buffers.contains(&"all".to_string());

        s
    }
}

#[async_trait]
impl Filter for BufferFilter {
    async fn filter(&self, log: &Log) -> bool {
        if self.all {
            return false;
        }

        for b in &self.buffers {
            if b == &log.buffer {
                return false;
            }
        }

        true
    }
}