stock-trek 0.5.0

Stock Trek time-series analysis
Documentation
use crate::{
    error::result::StockTrekResult,
    predicates::predicate::{Predicate, PredicateTrait},
    resolved_context::ResolvedContext,
    scratch::key::{ExchangeName, TokenName},
};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct OwnsTokenInExchangePredicate {
    token: TokenName,
    exchange: ExchangeName,
}

impl OwnsTokenInExchangePredicate {
    pub fn new(token: TokenName, exchange: ExchangeName) -> Predicate {
        Box::new(Self { token, exchange })
    }
}

#[typetag::serde]
impl PredicateTrait for OwnsTokenInExchangePredicate {
    fn test(&self, c: &ResolvedContext) -> StockTrekResult<bool> {
        Ok(c.portfolio
            .owns_token_in_exchange(&self.token, &self.exchange))
    }
}