ActivityStore

Struct ActivityStore 

Source
pub struct ActivityStore { /* private fields */ }
Expand description

Storage for activity GPS data.

Provides efficient storage and retrieval of activity coordinates with support for bulk operations via flat buffers.

Implementations§

Source§

impl ActivityStore

Source

pub fn new() -> Self

Create a new empty activity store.

Source

pub fn add( &mut self, id: String, coords: Vec<GpsPoint>, sport_type: String, ) -> Option<Bounds>

Add an activity with its GPS coordinates.

Returns the computed bounds for the activity.

Source

pub fn add_flat( &mut self, id: String, flat_coords: &[f64], sport_type: String, ) -> Option<Bounds>

Add an activity from flat coordinate buffer.

Coordinates are [lat1, lng1, lat2, lng2, …].

Source

pub fn add_many_flat( &mut self, activity_ids: &[String], all_coords: &[f64], offsets: &[u32], sport_types: &[String], ) -> Vec<String>

Add multiple activities from flat coordinate buffers.

This is the most efficient way to bulk-add activities from FFI.

Source

pub fn remove(&mut self, id: &str) -> Option<ActivityData>

Remove an activity by ID.

Returns the removed activity data if it existed.

Source

pub fn remove_many(&mut self, ids: &[String]) -> Vec<String>

Remove multiple activities.

Returns the IDs of activities that were actually removed.

Source

pub fn clear(&mut self)

Clear all activities.

Source

pub fn get(&self, id: &str) -> Option<&ActivityData>

Get an activity by ID.

Source

pub fn get_coords(&self, id: &str) -> Option<&[GpsPoint]>

Get the coordinates for an activity.

Source

pub fn get_sport_type(&self, id: &str) -> Option<&str>

Get the sport type for an activity.

Source

pub fn contains(&self, id: &str) -> bool

Check if an activity exists.

Source

pub fn ids(&self) -> impl Iterator<Item = &String>

Get all activity IDs.

Source

pub fn iter(&self) -> impl Iterator<Item = (&String, &ActivityData)>

Get all activities.

Source

pub fn values(&self) -> impl Iterator<Item = &ActivityData>

Get all activities as values.

Source

pub fn len(&self) -> usize

Get the number of activities.

Source

pub fn is_empty(&self) -> bool

Check if the store is empty.

Source

pub fn sport_type_map(&self) -> HashMap<String, String>

Build a map of activity ID to sport type.

Source

pub fn as_tracks(&self) -> Vec<(String, Vec<GpsPoint>)>

Build a vector of (id, coords) pairs for all activities.

Source

pub fn compute_track_distance(coords: &[GpsPoint]) -> f64

Compute the total distance of a GPS track in meters.

Trait Implementations§

Source§

impl Debug for ActivityStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ActivityStore

Source§

fn default() -> ActivityStore

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

Source§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
Source§

unsafe fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
Source§

unsafe fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<> Read more
Source§

unsafe fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool