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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! [`Point`] impl for `Adapt<&[T; N]>` — a borrowed array.
//!
//! Mirrors `boost/geometry/geometries/adapted/c_array.hpp` (raw C
//! arrays) and `boost/geometry/geometries/adapted/std_array.hpp`
//! (`std::array<T, N>`); the C++ side adapts both via the same
//! read-only `traits::access` specialisation because writing through
//! a const pointer is forbidden anyway. The Rust port encodes that
//! read-only nature by implementing [`Point`] (read) but *not*
//! `PointMut` (write) — the split added in KC1.T1.
//!
//! # Silent-Cartesian warning
//!
//! Same as for [`Adapt<[T; N]>`](crate::Adapt): this impl pins
//! `type Cs = Cartesian`. A raw `Adapt::<&[f64; 2]>(&[lon, lat])`
//! therefore satisfies every Cartesian-only strategy bound and will
//! silently compute Pythagorean nonsense over lat/lon. Wrap
//! geographic / spherical borrowed arrays with [`WithCs`](crate::WithCs).
use CoordinateScalar;
use Cartesian;
use PointTag;
use ;
use crateAdapt;