1
1
use std:: iter:: Sum ;
2
2
3
- use crate :: { CoordFloat , Line , LineString , MultiLineString } ;
3
+ use crate :: { CoordFloat , Euclidean , Length , Line , LineString , MultiLineString } ;
4
4
5
5
/// Calculation of the length
6
6
7
+ #[ deprecated(
8
+ since = "0.29.0" ,
9
+ note = "Please use the `line.length::<Euclidean>()` via the `Length` trait instead."
10
+ ) ]
7
11
pub trait EuclideanLength < T , RHS = Self > {
8
12
/// Calculation of the length of a Line
9
13
///
@@ -26,51 +30,56 @@ pub trait EuclideanLength<T, RHS = Self> {
26
30
fn euclidean_length ( & self ) -> T ;
27
31
}
28
32
33
+ #[ allow( deprecated) ]
29
34
impl < T > EuclideanLength < T > for Line < T >
30
35
where
31
36
T : CoordFloat ,
32
37
{
33
38
fn euclidean_length ( & self ) -> T {
34
- :: geo_types :: private_utils :: line_euclidean_length ( * self )
39
+ self . length :: < Euclidean > ( )
35
40
}
36
41
}
37
42
43
+ #[ allow( deprecated) ]
38
44
impl < T > EuclideanLength < T > for LineString < T >
39
45
where
40
46
T : CoordFloat + Sum ,
41
47
{
42
48
fn euclidean_length ( & self ) -> T {
43
- self . lines ( ) . map ( |line| line . euclidean_length ( ) ) . sum ( )
49
+ self . length :: < Euclidean > ( )
44
50
}
45
51
}
46
52
53
+ #[ allow( deprecated) ]
47
54
impl < T > EuclideanLength < T > for MultiLineString < T >
48
55
where
49
56
T : CoordFloat + Sum ,
50
57
{
51
58
fn euclidean_length ( & self ) -> T {
52
- self . 0
53
- . iter ( )
54
- . fold ( T :: zero ( ) , |total, line| total + line. euclidean_length ( ) )
59
+ self . length :: < Euclidean > ( )
55
60
}
56
61
}
57
62
58
63
#[ cfg( test) ]
59
64
mod test {
60
65
use crate :: line_string;
66
+ #[ allow( deprecated) ]
61
67
use crate :: EuclideanLength ;
62
68
use crate :: { coord, Line , MultiLineString } ;
63
69
70
+ #[ allow( deprecated) ]
64
71
#[ test]
65
72
fn empty_linestring_test ( ) {
66
73
let linestring = line_string ! [ ] ;
67
74
assert_relative_eq ! ( 0.0_f64 , linestring. euclidean_length( ) ) ;
68
75
}
76
+ #[ allow( deprecated) ]
69
77
#[ test]
70
78
fn linestring_one_point_test ( ) {
71
79
let linestring = line_string ! [ ( x: 0. , y: 0. ) ] ;
72
80
assert_relative_eq ! ( 0.0_f64 , linestring. euclidean_length( ) ) ;
73
81
}
82
+ #[ allow( deprecated) ]
74
83
#[ test]
75
84
fn linestring_test ( ) {
76
85
let linestring = line_string ! [
@@ -83,6 +92,7 @@ mod test {
83
92
] ;
84
93
assert_relative_eq ! ( 10.0_f64 , linestring. euclidean_length( ) ) ;
85
94
}
95
+ #[ allow( deprecated) ]
86
96
#[ test]
87
97
fn multilinestring_test ( ) {
88
98
let mline = MultiLineString :: new ( vec ! [
@@ -101,6 +111,7 @@ mod test {
101
111
] ) ;
102
112
assert_relative_eq ! ( 15.0_f64 , mline. euclidean_length( ) ) ;
103
113
}
114
+ #[ allow( deprecated) ]
104
115
#[ test]
105
116
fn line_test ( ) {
106
117
let line0 = Line :: new ( coord ! { x: 0. , y: 0. } , coord ! { x: 0. , y: 1. } ) ;
0 commit comments