Crate structpath

Source
Expand description

structpath is a libary which allows parsing and generating url paths in a convenient type safe way.

structpath leverages serde to help parse values into structs.

§Examples

§Basic example

use serde::{Deserialize, Serialize};
use structpath::Schema;

#[derive(Deserialize)]
struct FooParams {
    foo_id: u128,
    bar: String,
}

const foo_path = "/foo/<foo_id:u128>/bar/<bar>";

// This is a general idea of a web request handler, not important for the demonstration
fn foo_bar(request: Request) -> Response {
    let params: FooParams = Schema::path(foo_path).parse(request.path);
}

fn baz(request: Request) -> Response {
    let foo_path = Schema::path(foo_path).generate(FooParams{foo_id: foo_id, bar: bar});
    Response::Redirect(foo_path)
}

Structs§

Schema
Schema hold the schema definition for a particular url path pattern.
SegmentValueSchema
SegmentValueSchema holds the schema for a particular value segment.

Enums§

DeserializerState
Internal state for Deserializer, usually only useful for debugging.
PathSchemaParseError
Error type for parsing Schemas from a String
SegmentSchema
SegmentSchema is the schema for a particular path segment
SegmentType
SegmentType is a basic enum for specifying what type a segment’s value is.
SegmentValue
SegmentValue holds a parsed value
SerializerState
Internal state used by the Serializer, typically only used for debugging.
StructPathError
General error type for errors when parsing or generating urls

Functions§

generate_path
Generate a string url path given parameters and a Schema
parse_path
Parse a particular path using a Schema