#![doc = include_str!("../README.md")]
#![warn(clippy::pedantic)]
#![allow(
clippy::doc_markdown,
clippy::too_many_lines,
clippy::many_single_char_names,
clippy::similar_names,
clippy::cast_precision_loss,
clippy::cast_sign_loss,
clippy::cast_possible_truncation,
clippy::missing_panics_doc,
clippy::missing_errors_doc
)]
#[macro_use]
pub(crate) mod macros;
mod error;
mod methods;
use std::iter::Sum;
pub use error::Error;
pub use methods::*;
use num_traits::{Float as Float_, Num, NumAssign, NumOps};
#[cfg(feature = "parallel")]
pub trait Float: Float_ + Num + NumAssign + NumOps + Sum + Send + Sync {}
#[cfg(feature = "parallel")]
impl<T: Float_ + Num + NumAssign + NumOps + Sum + Send + Sync> Float for T {}
#[cfg(not(feature = "parallel"))]
pub trait Float: Float_ + Num + NumAssign + NumOps + Sum {}
#[cfg(not(feature = "parallel"))]
impl<T: Float_ + Num + NumAssign + NumOps + Sum> Float for T {}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct Computation<T: Float> {
pub statistic: T,
pub p_value: T,
}
#[cfg(all(feature = "serde", test))]
mod computation_serde_test {
use serde_test::{Token, assert_ser_tokens};
use super::Computation;
#[test]
fn test_computation_tokens() {
let computation = Computation {
statistic: 1.0,
p_value: 0.05,
};
let expected_tokens = vec![
Token::Struct {
name: "Computation",
len: 2,
},
Token::Str("statistic"),
Token::F64(1.0),
Token::Str("p_value"),
Token::F64(0.05),
Token::StructEnd,
];
assert_ser_tokens(&computation, &expected_tokens);
}
}