servo / servo/rust-url

Deserializing relative URLs with serde?

Open
#726 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1.6k
Forks
406
PR merge metrics
No merged PRs in 30d

Description

It would be nice to be able to deserialize relative URLs with serde, so you could have something like:

#[derive(Deserialize)]
struct Asset {
    url: Url
    ...
}

And then in a directory with /foo/bar.jpg and /foo/baz.toml:

[[assets]]
url = "./bar.jpg"

Serde could be configured to parse the asset url as file:///foo/bar.jpg.

I'm not sure if this is currently possible. Have if missed something? If not, I think it would be possible to sneak in a ParseOptions to the Deserialize impl using a static. I'm willing to write a patch for this. Would it be accepted upstream?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the serde Deserialize implementation for Url and the proposed ParseOptions/static configuration against the relative-path TOML example. Determine whether a base directory can be supplied and define completion as deserializing ./bar.jpg to file:///foo/bar.jpg; no test or file path is named in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.