FuzzyFinder

Struct FuzzyFinder 

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

FuzzyFinder blazing fast for most places on earth, use a preindex data. Not work for places around borders.

FuzzyFinder store all preindex’s tiles data in a HashMap, It iterate all zoom levels for input’s longitude and latitude to build map key to to check if in map.

It’s is very fast and use about 400ns to check if has preindex. It work for most places on earth and here is a quick loop of preindex data:

Implementations§

Source§

impl FuzzyFinder

Source

pub fn from_pb(tzs: PreindexTimezones) -> Self

Source

pub fn get_tz_name(&self, lng: f64, lat: f64) -> &str

Retrieves the time zone name for the given longitude and latitude.

§Arguments
  • lng - Longitude
  • lat - Latitude
§Example:
use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::new();
assert_eq!("Asia/Shanghai", finder.get_tz_name(116.3883, 39.9289));
§Panics
  • Panics if lng or lat is out of range.
  • Panics if lng or lat is not a number.
Source

pub fn get_tz_names(&self, lng: f64, lat: f64) -> Vec<&str>

Source

pub fn data_version(&self) -> &str

Gets the version of the data used by this FuzzyFinder.

§Returns

The version of the data used by this FuzzyFinder as a &str.

§Example:
use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::new();
println!("{:?}", finder.data_version());
Source

pub fn new() -> Self

Creates a new, empty FuzzyFinder.

use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::default();
Source

pub fn to_geojson(&self) -> BoundaryFile

Convert the FuzzyFinder’s preindex data to GeoJSON format.

This method generates polygons for each tile in the preindex, representing the geographic bounds of each tile.

Returns a BoundaryFile (FeatureCollection) containing all timezone tile polygons.

§Example
use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::new();
let geojson = finder.to_geojson();
let json_string = geojson.to_string();
Source

pub fn get_tz_geojson(&self, timezone_name: &str) -> Option<FeatureItem>

Convert a specific timezone’s preindex data to GeoJSON format.

Returns Some(FeatureItem) if the timezone is found in the preindex, None otherwise.

§Arguments
  • timezone_name - The timezone name to export (e.g., “Asia/Tokyo”)
§Example
use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::new();
if let Some(feature) = finder.get_tz_geojson("Asia/Tokyo") {
    let json_string = feature.to_string();
    println!("Found {} tiles for timezone", feature.geometry.coordinates.len());
}

Trait Implementations§

Source§

impl Default for FuzzyFinder

Source§

fn default() -> Self

Creates a new, empty FuzzyFinder.

use tzf_rs::FuzzyFinder;

let finder = FuzzyFinder::default();

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, 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, 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.