#uri #url #parser #uniform-resource #strong-typing

no-std async-coap-uri

Crate for using and manipulating Uniform Resource Identifiers with a minimal memory footprint and strong typing

1 unstable release

0.1.0 Aug 21, 2019

#13 in #uniform-resource

28 downloads per month
Used in 2 crates (via async-coap)

Apache-2.0

255KB
4K SLoC

async-coap-uri: Safe, In-place URI Abstraction

Build Status Crates.io API

This crate provides safe, efficient, full-featured support for using and manipulating Uniform Resource Identifiers.

It differs significantly from the rust-url and uri in that the API was designed to allow for more control over how memory is allocated while also being more convenient to use.

What makes this crate unique is that it provides URI-specific types that have the same unsized/sized type duality that is used for &str/String, except with specific guarantees on the content, as well as convenient domain-specific methods to access the URI components. The API was designed to be easy-to-use while making as few heap allocations as possible. Most common operations require no allocations at all, and those that do are provided as a convenience rather than a fundamental requirement. For example, you can parse and fully percent-decode a URI without doing a single allocation, including iterating over percent-decoded path segments and query key-value pairs.

See the crate documentation for more information.

Usage

Add this to your Cargo.toml:

[dependencies]
async-coap-uri = "0.1.0"

Now, you can use async-coap-uri:

use async_coap_uri::prelude::*;

License

async-coap-uri is released under the Apache 2.0 license.

Copyright (c) 2019 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Disclaimer

This is not an officially supported Google product.

Dependencies

~5MB
~101K SLoC