1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use super::*;

impl<T> From<&Triangle<T>> for Polygon<T>
where
    T: Clone,
{
    fn from(v: &Triangle<T>) -> Self {
        Self { vertex: vec![v.a.clone(), v.b.clone(), v.c.clone()] }
    }
}

impl<T> From<&Square<T>> for Polygon<T>
where
    T: Clone + Add<Output = T>,
{
    fn from(v: &Square<T>) -> Self {
        Self { vertex: v.vertexes() }
    }
}

impl<T> From<&Rectangle<T>> for Polygon<T>
where
    T: Clone + Add<Output = T>,
{
    fn from(v: &Rectangle<T>) -> Self {
        Self { vertex: v.vertexes() }
    }
}

impl<T> From<&Parallelogram<T>> for Polygon<T>
where
    T: Clone + Num,
{
    fn from(v: &Parallelogram<T>) -> Self {
        Self { vertex: v.vertexes() }
    }
}