fn self_intersecting_check(&self, l: &geometry::Line<I>) -> bool {
        let l_ = Self::line_i_to_f64(l);
        for s in self.segment_data_.iter() {
            // allow end point intersection
            if (s.start.x == l.start.x && s.start.y == l.start.y)
                && (s.end.x != l.end.x && s.end.y != l.end.y)
            {
                continue;
            }
            if (s.start.x == l.end.x && s.start.y == l.end.y)
                && (s.end.x != l.start.x && s.end.y != l.start.y)
            {
                continue;
            }
            if (s.end.x == l.end.x && s.end.y == l.end.y)
                && (s.start.x != l.start.x && s.start.y != l.start.y)
            {
                continue;
            }
            if (s.end.x == l.start.x && s.end.y == l.start.y)
                && (s.start.x != l.end.x && s.start.y != l.end.y)
            {
                continue;
            }

            let s_ = Self::line_i_to_f64(s);
            let s_: geo::Line<f64> = s_.into();
            let l_: geo::Line<f64> = l_.into();

            if l_.intersects(&s_) {
                return true;
            }
        }
        false
    }
// returns true if l intersects with any of the lines in self.segment_data_
returns true if l intersects with any of the lines in self.segment_data_
returns true if l intersects with any of the lines in self . segment_data_
fn self_intersecting_check(&self, l: &geometry::Line<I>) -> bool {
        let l_ = Self::line_i_to_f64(l);
        for s in self.segment_data_.iter() {
            // allow end point intersection
            if (s.start.x == l.start.x && s.start.y == l.start.y)
                && (s.end.x != l.end.x && s.end.y != l.end.y)
            {
                continue;
            }
            if (s.start.x == l.end.x && s.start.y == l.end.y)
                && (s.end.x != l.start.x && s.end.y != l.start.y)
            {
                continue;
            }
            if (s.end.x == l.end.x && s.end.y == l.end.y)
                && (s.start.x != l.start.x && s.start.y != l.start.y)
            {
                continue;
            }
            if (s.end.x == l.start.x && s.end.y == l.start.y)
                && (s.start.x != l.end.x && s.start.y != l.end.y)
            {
                continue;
            }
            let s_ = Self::line_i_to_f64(s);
            let s_: geo::Line<f64> = s_.into();
            let l_: geo::Line<f64> = l_.into();
            if l_.intersects(&s_) {
                return true;
            }
        }
        false
    }
fn self_intersecting_check ( & self , l : & geometry :: Line < I > ) -> bool { let l_ = Self :: line_i_to_f64 ( l ) ; for s in self . segment_data_ . iter ( ) { // allow end point intersection if ( s . start . x == l . start . x && s . start . y == l . start . y ) && ( s . end . x != l . end . x && s . end . y != l . end . y ) { continue ; } if ( s . start . x == l . end . x && s . start . y == l . end . y ) && ( s . end . x != l . start . x && s . end . y != l . start . y ) { continue ; } if ( s . end . x == l . end . x && s . end . y == l . end . y ) && ( s . start . x != l . start . x && s . start . y != l . start . y ) { continue ; } if ( s . end . x == l . start . x && s . end . y == l . start . y ) && ( s . start . x != l . end . x && s . start . y != l . end . y ) { continue ; } let s_ = Self :: line_i_to_f64 ( s ) ; let s_ : geo :: Line < f64 > = s_ . into ( ) ; let l_ : geo :: Line < f64 > = l_ . into ( ) ; if l_ . intersects ( & s_ ) { return true ; } } false }
returns true if l intersects with any of the lines in self.segment_data_
returns true if l intersects with any of the lines in self . segment_data_
&self
l
&geometry::Line<I>