A Rust crate for parsing and generating uniform resource identifiers for geographic locations (geo URIs) according to RFC 5870.
Go to file
Paul van Tilburg df5901aa72
Include examples from RFC 5870 as tests
2022-09-29 22:24:00 +02:00
src Include examples from RFC 5870 as tests 2022-09-29 22:24:00 +02:00
.gitignore Initial import into Git 2022-09-27 17:10:45 +02:00
Cargo.toml Add missing fields to Cargo.toml 2022-09-27 18:01:06 +02:00
LICENSE Add README.md and LICENSE file 2022-09-27 18:00:03 +02:00
README.md Change uncertainty distance to be of type f64 2022-09-29 22:19:45 +02:00

README.md

t# geo-uri-rs

A Rust crate (geo-uri) for uniform resource identifiers for geographic locations (geo URIs) according to IEEE RFC 5870. This crate allows for parsing and generating geo URIs in the correct format. Its parser is currently somewhat more liberal than the proposed standard.

It supports geolocations specified by latitude and longitude, but also optionally altitude and an uncertainty radius. The currently only supported coordinate reference system is WGS-84.

Usage

Just run the following to add this library to your project:

$ cargo add geo-uri
    Updating crates.io index
      Adding thiserror v??? to dependencies.

Parsing

Use either the FromStr or TryFrom traits to parse a geo URI string:

use geo_uri::GeoUri;

let geo_uri = GeoUri::try_from("geo:52.107,5.134,3.6;u=1000");
assert!(geo_uri.is_ok());

use std::str::FromStr;
let geo_uri2 = GeoUri::from_str("geo:52.107,5.134;u=2000.0");
assert!(geo_uri2.is_ok());

It is also possible to call the parse function directly:

use geo_uri::GeoUri;

let geo_uri3 = GeoUri::parse("geo:52.107,5.134,3.6;u=1000");
assert!(geo_uri3.is_ok());

Generating

Use either the ToString or Display trait to generate an geo URI after building it:

use geo_uri::GeoUri;

let geo_uri = GeoUri::builder()
    .latitude(52.107)
    .longitude(5.134)
    .uncertainty(1_000.0)
    .build()
    .unwrap();
assert_eq!(
    geo_uri.to_string(),
    String::from("geo:52.107,5.134;u=1000")
);
assert_eq!(
    format!("{geo_uri}"),
    String::from("geo:52.107,5.134;u=1000")
);

License

geo-uri-rs is licensed under the MIT license (see the LICENSE file or http://opensource.org/licenses/MIT).