peroxide 0.24.0

Rust comprehensive scientific computation library contains linear algebra, numerical analysis, statistics and machine learning tools with farmiliar syntax
Documentation
//! Easy to print any structures

use rand::distributions::uniform::SampleUniform;
use crate::statistics::dist::*;
use std::fmt::Debug;
use crate::structure::{
    matrix::Matrix,
    polynomial::Polynomial,
    multinomial::Multinomial,
    dual::{Dual, Dualist},
    hyper_dual::HyperDual,
};
use crate::traits::{
    num::Number,
};
#[allow(unused_imports)]
#[cfg(feature = "dataframe")]
use crate::structure::dataframe::*;

pub trait Printable {
    fn print(&self);
}

impl Printable for f64 {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for f32 {
    fn print(&self) {
        println!("{}", self);
    }
}
impl Printable for u64 {
    fn print(&self) {
        println!("{}", self);
    }
}
impl Printable for u32 {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for usize {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for i64 {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for i32 {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for Vec<usize> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<u32> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<u64> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<isize> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<i32> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<i64> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<char> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<&str> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<String> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Vec<f64> {
    fn print(&self) {
        let mut result = String::new();
        result.push_str("[");
        for i in 0..self.len() {
            let st1 = format!("{:.4}", self[i]);
            let st2 = self[i].to_string();
            let mut st = st2.clone();

            if st1.len() < st2.len() {
                st = st1;
            }

            result.push_str(&st);
            if i == self.len() - 1 {
                break;
            }
            result.push_str(", ");
        }
        result.push_str("]");

        println!("{}", result);
    }
}

impl Printable for Matrix {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for Polynomial {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for Dual {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for Multinomial {
    fn print(&self) {
        println!("{}", self);
    }
}

impl Printable for Vec<Dual> {
    fn print(&self) {
        println!("value:");
        self.values().print();
        println!("slope:");
        self.slopes().print();
    }
}

impl Printable for HyperDual {
    fn print(&self) {
        println!("{}", self);
    }
}

impl<T: Debug + PartialOrd + SampleUniform + Copy + Into<f64>> Printable for OPDist<T> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl<T: Debug + PartialOrd + SampleUniform + Copy + Into<f64>> Printable for TPDist<T> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

impl Printable for Number {
    fn print(&self) {
        println!("{:?}", self)
    }
}

impl Printable for Vec<Number> {
    fn print(&self) {
        println!("{:?}", self);
    }
}

#[cfg(feature = "dataframe")]
impl Printable for DataFrame {
    fn print(&self) {
        println!("{}", self)
    }
}