pub struct FfiChartStore { /* private fields */ }Expand description
A chart, opened once and reused for as many route queries as the foreign side wants.
Wraps the store in a mutex for the same reason crate::FfiSimulator
wraps its own state in one: a UniFFI object is handed to the foreign
side as one shared reference, and ChartStore’s rusqlite::Connection
is not Sync – nothing here mutates the chart, but more than one
thread reaching into the same connection at once is still unsound.
Implementations§
Source§impl FfiChartStore
impl FfiChartStore
Sourcepub fn new(chart_path: String) -> Result<Self, FfiRouteError>
pub fn new(chart_path: String) -> Result<Self, FfiRouteError>
Sourcepub fn find_route(
&self,
from: FfiPosition,
to: FfiPosition,
safety_contour_m: f64,
corridor_nm: f64,
) -> Result<Option<Vec<FfiPosition>>, FfiRouteError>
pub fn find_route( &self, from: FfiPosition, to: FfiPosition, safety_contour_m: f64, corridor_nm: f64, ) -> Result<Option<Vec<FfiPosition>>, FfiRouteError>
The shortest route between from and to this chart’s own safety
check calls safe, for a vessel needing safety_contour_m of water
and corridor_nm of cross-track room either side of the track –
None if no such route exists within what
route_find::find_route’s own auto-widening search settles for.
§Errors
If the chart cannot be read.
Trait Implementations§
Source§impl<UT> LiftRef<UT> for FfiChartStore
impl<UT> LiftRef<UT> for FfiChartStore
type LiftType = Arc<FfiChartStore>
Source§impl<UT> LowerError<UT> for FfiChartStore
impl<UT> LowerError<UT> for FfiChartStore
Source§fn lower_error(obj: Self) -> RustBuffer
fn lower_error(obj: Self) -> RustBuffer
Lower this value for scaffolding function return Read more
Source§impl<UT> LowerReturn<UT> for FfiChartStore
impl<UT> LowerReturn<UT> for FfiChartStore
Source§type ReturnType = <Arc<FfiChartStore> as LowerReturn<UniFfiTag>>::ReturnType
type ReturnType = <Arc<FfiChartStore> as LowerReturn<UniFfiTag>>::ReturnType
The type that should be returned by scaffolding functions for this type. Read more
Source§fn lower_return(obj: Self) -> Result<Self::ReturnType, RustCallError>
fn lower_return(obj: Self) -> Result<Self::ReturnType, RustCallError>
Lower the return value from an scaffolding call Read more
§fn handle_failed_lift(
error: LiftArgsError,
) -> Result<Self::ReturnType, RustCallError>
fn handle_failed_lift( error: LiftArgsError, ) -> Result<Self::ReturnType, RustCallError>
Lower the return value for failed argument lifts Read more
Source§impl<UT> TypeId<UT> for FfiChartStore
impl<UT> TypeId<UT> for FfiChartStore
const TYPE_ID_META: MetadataBuffer
Auto Trait Implementations§
impl !Freeze for FfiChartStore
impl RefUnwindSafe for FfiChartStore
impl Send for FfiChartStore
impl Sync for FfiChartStore
impl Unpin for FfiChartStore
impl UnsafeUnpin for FfiChartStore
impl UnwindSafe for FfiChartStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
Create a new handle for an Arc value Read more
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
Clone a handle Read more
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Consume a handle, getting back the initial
Arc<> Read moreSource§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more