pub trait SkyObject {
// Required method
fn position(&self) -> Equatorial;
}Expand description
A catalogue object that can be matched by sky position.
The trait exposes only a J2000 position — matching never reads a name or
designation. A caller’s own type keeps its identity; a Match borrows it.
§Example
use skymath::{Angle, Equatorial};
use target_match::SkyObject;
struct Target {
name: &'static str,
ra: f64,
dec: f64,
}
impl SkyObject for Target {
fn position(&self) -> Equatorial {
Equatorial::j2000(Angle::from_degrees(self.ra), Angle::from_degrees(self.dec)).unwrap()
}
}
let m31 = Target { name: "M 31", ra: 10.6847, dec: 41.2688 };
assert!((m31.position().ra().degrees() - 10.6847).abs() < 1e-9);Required Methods§
Sourcefn position(&self) -> Equatorial
fn position(&self) -> Equatorial
The object’s J2000 equatorial position — the only thing rank,
is_framed, and Matcher read from an implementer.
§Example
use skymath::{Angle, Equatorial};
use target_match::SkyObject;
struct Target { ra_deg: f64, dec_deg: f64 }
impl SkyObject for Target {
fn position(&self) -> Equatorial {
Equatorial::j2000(Angle::from_degrees(self.ra_deg), Angle::from_degrees(self.dec_deg)).unwrap()
}
}
let m31 = Target { ra_deg: 10.6847, dec_deg: 41.2688 };
assert!((m31.position().ra().degrees() - 10.6847).abs() < 1e-9);Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".