Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use num_traits::{cast::FromPrimitive, float::Float};
- pub trait IsValid {
- fn is_valid(&self) -> bool;
- }
- fn is_valid_default<T: Float + FromPrimitive>(a: T, b: T, c: T) -> bool {
- let zero = T::from_f32(0.0).unwrap();
- a > zero && b > zero && c > zero && (a + b) > c && (b + c) > a && (c + a) > b
- }
- // 各辺の長さ
- pub struct Sides {
- a: f64,
- b: f64,
- c: f64,
- }
- impl Sides {
- pub fn new(a: f64, b: f64, c: f64) -> Sides {
- Sides { a, b, c }
- }
- }
- impl IsValid for Sides {
- fn is_valid(&self) -> bool {
- is_valid_default(self.a, self.b, self.c)
- }
- }
- // 各辺の比率
- pub struct SidesRatio {
- a: f32,
- b: f32,
- c: f32,
- }
- impl SidesRatio {
- pub fn new(a: f32, b: f32, c: f32) -> SidesRatio {
- SidesRatio { a, b, c }
- }
- }
- impl IsValid for SidesRatio {
- fn is_valid(&self) -> bool {
- is_valid_default(self.a, self.b, self.c)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement