Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove duplicate dependencies in Cargo.toml #459

Closed
jyn514 opened this issue Nov 1, 2019 · 19 comments
Closed

Remove duplicate dependencies in Cargo.toml #459

jyn514 opened this issue Nov 1, 2019 · 19 comments
Labels
A-newcomer-roadblock Area: A problem that isn't a bug, but makes it harder for people to contribute E-hard Effort: This will require a lot of work P-medium Medium priority

Comments

@jyn514
Copy link
Member

jyn514 commented Nov 1, 2019

I noticed while building from the latest change to the Dockerfile that many dependencies are repeated with different versions. It would be nice to make sure that we only depend on 1 version of any given package so developers don't have to compile as much on their first build. Fixing this shouldn't be hard but it might be tedious.

Here's a graph of the duplicated dependencies, created with cargo tree --duplicate. Note that they are listed in reverse dependencies order, so the first duplicate here is aho-corasick, which is required by regex, which is required by handlebars, which is required by handlebars-iron.

Duplicates
aho-corasick v0.6.8
└── regex v0.2.11
    └── handlebars v0.24.2
        └── handlebars-iron v0.22.0
            └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

aho-corasick v0.7.3
├── globset v0.4.3
│   └── ignore v0.4.7
│       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── regex v1.1.7
    ├── comrak v0.3.1
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── env_logger v0.6.0
    │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── globset v0.4.3 (*)
    ├── ignore v0.4.7 (*)
    └── rusoto_credential v0.40.0
        ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        └── rusoto_core v0.40.0
            ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
            └── rusoto_s3 v0.40.0
                └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

base64 v0.6.0
├── hyper v0.10.13
│   └── iron v0.5.1
│       ├── bodyparser v0.5.0
│       │   ├── params v0.6.0
│       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       │   └── urlencoded v0.5.0
│       │       └── params v0.6.0 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── handlebars-iron v0.22.0
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── mount v0.3.0
│       │   └── staticfile v0.4.0
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── params v0.6.0 (*)
│       ├── persistent v0.3.0
│       │   └── bodyparser v0.5.0 (*)
│       ├── router v0.5.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── staticfile v0.4.0 (*)
│       └── urlencoded v0.5.0 (*)
└── postgres-protocol v0.3.2
    ├── postgres v0.15.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   ├── r2d2_postgres v0.14.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── schemamama_postgres v0.2.3
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── postgres-shared v0.4.1
        ├── postgres v0.15.2 (*)
        └── r2d2_postgres v0.14.0 (*)

base64 v0.9.3
├── badge v0.2.0 (/home/joshua/Documents/Programming/rust/docs.rs/src/web/badge)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── reqwest v0.9.2
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustwide v0.3.2
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
└── rusoto_core v0.40.0
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── rusoto_s3 v0.40.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

base64 v0.10.1
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

bitflags v0.7.0
└── magic v0.12.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

bitflags v1.0.4
├── clap v2.32.0
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── git2 v0.9.1
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── crates-index-diff v4.0.1
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── git2-curl v0.10.0
│       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   [build-dependencies]
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── nix v0.11.0
│   └── rustwide v0.3.2
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── openssl v0.10.13
│   ├── crypto-hash v0.3.1
│   │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   └── native-tls v0.2.1
│       ├── hyper-tls v0.3.1
│       │   ├── reqwest v0.9.2
│       │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   │   └── rustwide v0.3.2 (*)
│       │   └── rusoto_core v0.40.0
│       │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │       └── rusoto_s3 v0.40.0
│       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       └── reqwest v0.9.2 (*)
└── xml-rs v0.7.0
    ├── rusoto_core v0.40.0 (*)
    └── rusoto_s3 v0.40.0 (*)

bytesize v0.1.3
└── systemstat v0.1.4
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

bytesize v1.0.0
└── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

crossbeam-utils v0.5.0
├── crossbeam-deque v0.6.1
│   └── tokio-threadpool v0.1.7
│       ├── hyper v0.12.19
│       │   ├── hyper-tls v0.3.1
│       │   │   ├── reqwest v0.9.2
│       │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       │   │   │   └── rustwide v0.3.2
│       │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   │   └── rusoto_core v0.40.0
│       │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   │       └── rusoto_s3 v0.40.0
│       │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   ├── reqwest v0.9.2 (*)
│       │   ├── rusoto_core v0.40.0 (*)
│       │   └── rusoto_credential v0.40.0
│       │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │       └── rusoto_core v0.40.0 (*)
│       ├── tokio v0.1.11
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   ├── hyper v0.12.19 (*)
│       │   ├── reqwest v0.9.2 (*)
│       │   ├── rusoto_core v0.40.0 (*)
│       │   └── rustwide v0.3.2 (*)
│       └── tokio-fs v0.1.3
│           └── tokio v0.1.11 (*)
├── crossbeam-epoch v0.5.2
│   └── crossbeam-deque v0.6.1 (*)
├── tokio-reactor v0.1.6
│   ├── hyper v0.12.19 (*)
│   ├── tokio v0.1.11 (*)
│   ├── tokio-process v0.2.3
│   │   ├── rusoto_credential v0.40.0 (*)
│   │   └── rustwide v0.3.2 (*)
│   ├── tokio-signal v0.2.7
│   │   └── tokio-process v0.2.3 (*)
│   ├── tokio-tcp v0.1.2
│   │   ├── hyper v0.12.19 (*)
│   │   └── tokio v0.1.11 (*)
│   ├── tokio-udp v0.1.2
│   │   └── tokio v0.1.11 (*)
│   └── tokio-uds v0.2.2
│       └── tokio v0.1.11 (*)
├── tokio-threadpool v0.1.7 (*)
└── tokio-timer v0.2.7
    ├── hyper v0.12.19 (*)
    ├── rusoto_core v0.40.0 (*)
    ├── rusoto_credential v0.40.0 (*)
    └── tokio v0.1.11 (*)

crossbeam-utils v0.6.5
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── crossbeam-channel v0.3.8
    └── ignore v0.4.7
        └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)

dtoa v0.2.2
└── serde_json v0.8.6
    ├── bodyparser v0.5.0
    │   ├── params v0.6.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │   └── urlencoded v0.5.0
    │       └── params v0.6.0 (*)
    └── params v0.6.0 (*)

dtoa v0.4.3
└── serde_urlencoded v0.5.3
    └── reqwest v0.9.2
        ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
        └── rustwide v0.3.2
            └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

filetime v0.1.15
└── staticfile v0.4.0
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

filetime v0.2.1
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── tar v0.4.20
    ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    └── rustwide v0.3.2
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

hex v0.2.0
└── postgres-shared v0.4.1
    ├── postgres v0.15.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │   ├── r2d2_postgres v0.14.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── schemamama_postgres v0.2.3
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── r2d2_postgres v0.14.0 (*)

hex v0.3.2
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── crypto-hash v0.3.1
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
└── rusoto_core v0.40.0
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── rusoto_s3 v0.40.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

hyper v0.10.13
└── iron v0.5.1
    ├── bodyparser v0.5.0
    │   ├── params v0.6.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │   └── urlencoded v0.5.0
    │       └── params v0.6.0 (*)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── handlebars-iron v0.22.0
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── mount v0.3.0
    │   └── staticfile v0.4.0
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── params v0.6.0 (*)
    ├── persistent v0.3.0
    │   └── bodyparser v0.5.0 (*)
    ├── router v0.5.1
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── staticfile v0.4.0 (*)
    └── urlencoded v0.5.0 (*)

hyper v0.12.19
├── hyper-tls v0.3.1
│   ├── reqwest v0.9.2
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   │   └── rustwide v0.3.2
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rusoto_core v0.40.0
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       └── rusoto_s3 v0.40.0
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── reqwest v0.9.2 (*)
├── rusoto_core v0.40.0 (*)
└── rusoto_credential v0.40.0
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── rusoto_core v0.40.0 (*)

itoa v0.1.1
└── serde_json v0.8.6
    ├── bodyparser v0.5.0
    │   ├── params v0.6.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │   └── urlencoded v0.5.0
    │       └── params v0.6.0 (*)
    └── params v0.6.0 (*)

itoa v0.4.3
├── http v0.1.17
│   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   ├── h2 v0.1.12
│   │   └── hyper v0.12.19
│   │       ├── hyper-tls v0.3.1
│   │       │   ├── reqwest v0.9.2
│   │       │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   │   └── rustwide v0.3.2
│   │       │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   └── rusoto_core v0.40.0
│   │       │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │       └── rusoto_s3 v0.40.0
│   │       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── reqwest v0.9.2 (*)
│   │       ├── rusoto_core v0.40.0 (*)
│   │       └── rusoto_credential v0.40.0
│   │           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │           └── rusoto_core v0.40.0 (*)
│   ├── hyper v0.12.19 (*)
│   ├── reqwest v0.9.2 (*)
│   └── rusoto_core v0.40.0 (*)
├── hyper v0.12.19 (*)
├── serde_json v1.0.32
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── crates-index-diff v4.0.1
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── reqwest v0.9.2 (*)
│   ├── rusoto_core v0.40.0 (*)
│   ├── rusoto_credential v0.40.0 (*)
│   ├── rustfix v0.4.4
│   │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   └── rustwide v0.3.2 (*)
│   [build-dependencies]
│   └── markup5ever v0.7.2
│       └── html5ever v0.22.3
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   [dev-dependencies]
│   └── rusoto_core v0.40.0 (*)
└── serde_urlencoded v0.5.3
    └── reqwest v0.9.2 (*)

lazy_static v0.2.11
├── handlebars v0.24.2
│   └── handlebars-iron v0.22.0
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── iron v0.5.1
    ├── bodyparser v0.5.0
    │   ├── params v0.6.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── urlencoded v0.5.0
    │       └── params v0.6.0 (*)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── handlebars-iron v0.22.0 (*)
    ├── mount v0.3.0
    │   └── staticfile v0.4.0
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── params v0.6.0 (*)
    ├── persistent v0.3.0
    │   └── bodyparser v0.5.0 (*)
    ├── router v0.5.1
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── staticfile v0.4.0 (*)
    └── urlencoded v0.5.0 (*)

lazy_static v1.2.0
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── comrak v0.3.1
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── crossbeam-epoch v0.5.2
│   └── crossbeam-deque v0.6.1
│       └── tokio-threadpool v0.1.7
│           ├── hyper v0.12.19
│           │   ├── hyper-tls v0.3.1
│           │   │   ├── reqwest v0.9.2
│           │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │   │   └── rustwide v0.3.2
│           │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │   └── rusoto_core v0.40.0
│           │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │       └── rusoto_s3 v0.40.0
│           │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rusoto_credential v0.40.0
│           │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │       └── rusoto_core v0.40.0 (*)
│           ├── tokio v0.1.11
│           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── hyper v0.12.19 (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rustwide v0.3.2 (*)
│           └── tokio-fs v0.1.3
│               └── tokio v0.1.11 (*)
├── crossbeam-utils v0.6.5
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   └── crossbeam-channel v0.3.8
│       └── ignore v0.4.7
│           └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── ignore v0.4.7 (*)
├── openssl v0.10.13
│   ├── crypto-hash v0.3.1
│   │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   └── native-tls v0.2.1
│       ├── hyper-tls v0.3.1 (*)
│       └── reqwest v0.9.2 (*)
├── prometheus v0.7.0
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── rusoto_core v0.40.0 (*)
├── rustwide v0.3.2 (*)
├── string_cache v0.7.3
│   └── markup5ever v0.7.2
│       └── html5ever v0.22.3
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── systemstat v0.1.4
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── thread_local v0.3.6
│   ├── ignore v0.4.7 (*)
│   ├── regex v0.2.11
│   │   └── handlebars v0.24.2
│   │       └── handlebars-iron v0.22.0
│   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── regex v1.1.7
│       ├── comrak v0.3.1 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── env_logger v0.6.0
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── globset v0.4.3
│       │   └── ignore v0.4.7 (*)
│       ├── ignore v0.4.7 (*)
│       └── rusoto_credential v0.40.0 (*)
└── tokio-reactor v0.1.6
    ├── hyper v0.12.19 (*)
    ├── tokio v0.1.11 (*)
    ├── tokio-process v0.2.3
    │   ├── rusoto_credential v0.40.0 (*)
    │   └── rustwide v0.3.2 (*)
    ├── tokio-signal v0.2.7
    │   └── tokio-process v0.2.3 (*)
    ├── tokio-tcp v0.1.2
    │   ├── hyper v0.12.19 (*)
    │   └── tokio v0.1.11 (*)
    ├── tokio-udp v0.1.2
    │   └── tokio v0.1.11 (*)
    └── tokio-uds v0.2.2
        └── tokio v0.1.11 (*)

log v0.3.9
├── handlebars v0.24.2
│   └── handlebars-iron v0.22.0
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── handlebars-iron v0.22.0 (*)
├── hyper v0.10.13
│   └── iron v0.5.1
│       ├── bodyparser v0.5.0
│       │   ├── params v0.6.0
│       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── urlencoded v0.5.0
│       │       └── params v0.6.0 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── handlebars-iron v0.22.0 (*)
│       ├── mount v0.3.0
│       │   └── staticfile v0.4.0
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── params v0.6.0 (*)
│       ├── persistent v0.3.0
│       │   └── bodyparser v0.5.0 (*)
│       ├── router v0.5.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── staticfile v0.4.0 (*)
│       └── urlencoded v0.5.0 (*)
├── iron v0.5.1 (*)
├── mime v0.2.6
│   ├── hyper v0.10.13 (*)
│   ├── mime_guess v1.8.6
│   │   └── multipart v0.8.1
│   │       └── params v0.6.0 (*)
│   └── multipart v0.8.1 (*)
└── multipart v0.8.1 (*)

log v0.4.6
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── env_logger v0.6.0
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── git2 v0.9.1
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── crates-index-diff v4.0.1
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── git2-curl v0.10.0
│       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   [build-dependencies]
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── git2-curl v0.10.0 (*)
├── globset v0.4.3
│   └── ignore v0.4.7
│       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── h2 v0.1.12
│   └── hyper v0.12.19
│       ├── hyper-tls v0.3.1
│       │   ├── reqwest v0.9.2
│       │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   │   └── rustwide v0.3.2
│       │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rusoto_core v0.40.0
│       │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │       └── rusoto_s3 v0.40.0
│       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── reqwest v0.9.2 (*)
│       ├── rusoto_core v0.40.0 (*)
│       └── rusoto_credential v0.40.0
│           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           └── rusoto_core v0.40.0 (*)
├── html5ever v0.22.3
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── hyper v0.12.19 (*)
├── ignore v0.4.7 (*)
├── jobserver v0.1.13
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── log v0.3.9
│   ├── handlebars v0.24.2
│   │   └── handlebars-iron v0.22.0
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── handlebars-iron v0.22.0 (*)
│   ├── hyper v0.10.13
│   │   └── iron v0.5.1
│   │       ├── bodyparser v0.5.0
│   │       │   ├── params v0.6.0
│   │       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   └── urlencoded v0.5.0
│   │       │       └── params v0.6.0 (*)
│   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── handlebars-iron v0.22.0 (*)
│   │       ├── mount v0.3.0
│   │       │   └── staticfile v0.4.0
│   │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── params v0.6.0 (*)
│   │       ├── persistent v0.3.0
│   │       │   └── bodyparser v0.5.0 (*)
│   │       ├── router v0.5.1
│   │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── staticfile v0.4.0 (*)
│   │       └── urlencoded v0.5.0 (*)
│   ├── iron v0.5.1 (*)
│   ├── mime v0.2.6
│   │   ├── hyper v0.10.13 (*)
│   │   ├── mime_guess v1.8.6
│   │   │   └── multipart v0.8.1
│   │   │       └── params v0.6.0 (*)
│   │   └── multipart v0.8.1 (*)
│   └── multipart v0.8.1 (*)
├── mio v0.6.16
│   ├── mio-uds v0.6.7
│   │   ├── tokio-signal v0.2.7
│   │   │   └── tokio-process v0.2.3
│   │   │       ├── rusoto_credential v0.40.0 (*)
│   │   │       └── rustwide v0.3.2 (*)
│   │   └── tokio-uds v0.2.2
│   │       └── tokio v0.1.11
│   │           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │           ├── hyper v0.12.19 (*)
│   │           ├── reqwest v0.9.2 (*)
│   │           ├── rusoto_core v0.40.0 (*)
│   │           └── rustwide v0.3.2 (*)
│   ├── tokio v0.1.11 (*)
│   ├── tokio-process v0.2.3 (*)
│   ├── tokio-reactor v0.1.6
│   │   ├── hyper v0.12.19 (*)
│   │   ├── tokio v0.1.11 (*)
│   │   ├── tokio-process v0.2.3 (*)
│   │   ├── tokio-signal v0.2.7 (*)
│   │   ├── tokio-tcp v0.1.2
│   │   │   ├── hyper v0.12.19 (*)
│   │   │   └── tokio v0.1.11 (*)
│   │   ├── tokio-udp v0.1.2
│   │   │   └── tokio v0.1.11 (*)
│   │   └── tokio-uds v0.2.2 (*)
│   ├── tokio-signal v0.2.7 (*)
│   ├── tokio-tcp v0.1.2 (*)
│   ├── tokio-udp v0.1.2 (*)
│   └── tokio-uds v0.2.2 (*)
├── postgres v0.15.2
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── r2d2_postgres v0.14.0
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── schemamama_postgres v0.2.3
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── r2d2 v0.8.2
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── r2d2_postgres v0.14.0 (*)
├── reqwest v0.9.2 (*)
├── rusoto_core v0.40.0 (*)
├── rustfix v0.4.4
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── rustwide v0.3.2 (*)
├── schemamama v0.3.0
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── schemamama_postgres v0.2.3 (*)
├── tokio-io v0.1.9
│   ├── h2 v0.1.12 (*)
│   ├── hyper v0.12.19 (*)
│   ├── hyper-tls v0.3.1 (*)
│   ├── reqwest v0.9.2 (*)
│   ├── tokio v0.1.11 (*)
│   ├── tokio-codec v0.1.1
│   │   ├── tokio v0.1.11 (*)
│   │   └── tokio-udp v0.1.2 (*)
│   ├── tokio-fs v0.1.3
│   │   └── tokio v0.1.11 (*)
│   ├── tokio-process v0.2.3 (*)
│   ├── tokio-reactor v0.1.6 (*)
│   ├── tokio-signal v0.2.7 (*)
│   ├── tokio-tcp v0.1.2 (*)
│   ├── tokio-udp v0.1.2 (*)
│   └── tokio-uds v0.2.2 (*)
│   [dev-dependencies]
│   └── tokio-fs v0.1.3 (*)
├── tokio-reactor v0.1.6 (*)
├── tokio-threadpool v0.1.7
│   ├── hyper v0.12.19 (*)
│   ├── tokio v0.1.11 (*)
│   └── tokio-fs v0.1.3 (*)
├── tokio-udp v0.1.2 (*)
├── tokio-uds v0.2.2 (*)
└── want v0.0.6
    └── hyper v0.12.19 (*)
[dev-dependencies]
└── rustfix v0.4.4 (*)

memchr v0.1.11
└── multipart v0.8.1
    └── params v0.6.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

memchr v1.0.2
├── nom v3.2.1
│   └── systemstat v0.1.4
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── postgres-protocol v0.3.2
    ├── postgres v0.15.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   ├── r2d2_postgres v0.14.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── schemamama_postgres v0.2.3
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── postgres-shared v0.4.1
        ├── postgres v0.15.2 (*)
        └── r2d2_postgres v0.14.0 (*)

memchr v2.2.0
├── aho-corasick v0.6.8
│   └── regex v0.2.11
│       └── handlebars v0.24.2
│           └── handlebars-iron v0.22.0
│               └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── aho-corasick v0.7.3
│   ├── globset v0.4.3
│   │   └── ignore v0.4.7
│   │       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── regex v1.1.7
│       ├── comrak v0.3.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── env_logger v0.6.0
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── globset v0.4.3 (*)
│       ├── ignore v0.4.7 (*)
│       └── rusoto_credential v0.40.0
│           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           └── rusoto_core v0.40.0
│               ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│               └── rusoto_s3 v0.40.0
│                   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── bstr v0.1.4
│   └── globset v0.4.3 (*)
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── ignore v0.4.7 (*)
├── regex v0.2.11 (*)
├── regex v1.1.7 (*)
└── twoway v0.1.8
    └── comrak v0.3.1 (*)

mime v0.2.6
├── hyper v0.10.13
│   └── iron v0.5.1
│       ├── bodyparser v0.5.0
│       │   ├── params v0.6.0
│       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       │   └── urlencoded v0.5.0
│       │       └── params v0.6.0 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── handlebars-iron v0.22.0
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── mount v0.3.0
│       │   └── staticfile v0.4.0
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── params v0.6.0 (*)
│       ├── persistent v0.3.0
│       │   └── bodyparser v0.5.0 (*)
│       ├── router v0.5.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── staticfile v0.4.0 (*)
│       └── urlencoded v0.5.0 (*)
├── mime_guess v1.8.6
│   └── multipart v0.8.1
│       └── params v0.6.0 (*)
└── multipart v0.8.1 (*)

mime v0.3.9
├── mime_guess v2.0.0-alpha.6
│   └── reqwest v0.9.2
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       └── rustwide v0.3.2
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
└── reqwest v0.9.2 (*)

mime_guess v1.8.6
└── multipart v0.8.1
    └── params v0.6.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

mime_guess v2.0.0-alpha.6
└── reqwest v0.9.2
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    └── rustwide v0.3.2
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

num-traits v0.1.43
└── serde_json v0.8.6
    ├── bodyparser v0.5.0
    │   ├── params v0.6.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │   └── urlencoded v0.5.0
    │       └── params v0.6.0 (*)
    └── params v0.6.0 (*)

num-traits v0.2.6
├── approx v0.3.0
│   └── rusttype v0.7.2
│       └── badge v0.2.0 (/home/joshua/Documents/Programming/rust/docs.rs/src/web/badge)
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── chrono v0.4.7
│   ├── rusoto_credential v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_core v0.40.0
│   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       └── rusoto_s3 v0.40.0
│   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── systemstat v0.1.4
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── num v0.1.42
│   └── params v0.6.0
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── num-bigint v0.1.44
│   ├── num v0.1.42 (*)
│   └── num-rational v0.1.42
│       └── num v0.1.42 (*)
├── num-complex v0.1.43
│   └── num v0.1.42 (*)
├── num-integer v0.1.39
│   ├── chrono v0.4.7 (*)
│   ├── num v0.1.42 (*)
│   ├── num-bigint v0.1.44 (*)
│   ├── num-iter v0.1.37
│   │   └── num v0.1.42 (*)
│   └── num-rational v0.1.42 (*)
├── num-iter v0.1.37 (*)
├── num-rational v0.1.42 (*)
├── num-traits v0.1.43
│   └── serde_json v0.8.6
│       ├── bodyparser v0.5.0
│       │   ├── params v0.6.0 (*)
│       │   └── urlencoded v0.5.0
│       │       └── params v0.6.0 (*)
│       └── params v0.6.0 (*)
└── ordered-float v1.0.1
    └── rusttype v0.7.2 (*)

percent-encoding v1.0.1
└── url v1.7.1
    ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
    │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── git2 v0.9.1
    │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    │   ├── crates-index-diff v4.0.1
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── git2-curl v0.10.0
    │       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    │   [build-dependencies]
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── git2-curl v0.10.0 (*)
    ├── hyper v0.10.13
    │   └── iron v0.5.1
    │       ├── bodyparser v0.5.0
    │       │   ├── params v0.6.0
    │       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       │   └── urlencoded v0.5.0
    │       │       └── params v0.6.0 (*)
    │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── handlebars-iron v0.22.0
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── mount v0.3.0
    │       │   └── staticfile v0.4.0
    │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── params v0.6.0 (*)
    │       ├── persistent v0.3.0
    │       │   └── bodyparser v0.5.0 (*)
    │       ├── router v0.5.1
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── staticfile v0.4.0 (*)
    │       └── urlencoded v0.5.0 (*)
    ├── iron v0.5.1 (*)
    ├── reqwest v0.9.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── rustwide v0.3.2
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── router v0.5.1 (*)
    ├── rusoto_core v0.40.0
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── rusoto_s3 v0.40.0
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── serde_urlencoded v0.5.3
    │   └── reqwest v0.9.2 (*)
    ├── staticfile v0.4.0 (*)
    ├── url_serde v0.2.0
    │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    └── urlencoded v0.5.0 (*)

percent-encoding v2.1.0
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

pest v0.3.3
└── handlebars v0.24.2
    └── handlebars-iron v0.22.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

pest v1.0.6
├── comrak v0.3.1
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── pest_derive v1.0.8
    └── comrak v0.3.1 (*)

proc-macro2 v0.3.8
├── quote v0.5.2
│   ├── string_cache_codegen v0.4.1
│   │   [build-dependencies]
│   │   ├── markup5ever v0.7.2
│   │   │   └── html5ever v0.22.3
│   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   │   └── string_cache v0.7.3
│   │       └── markup5ever v0.7.2 (*)
│   └── syn v0.13.11
│       [build-dependencies]
│       └── html5ever v0.22.3 (*)
│   [build-dependencies]
│   └── html5ever v0.22.3 (*)
├── string_cache_codegen v0.4.1 (*)
└── syn v0.13.11 (*)
[build-dependencies]
└── html5ever v0.22.3 (*)

proc-macro2 v0.4.20
├── failure_derive v0.1.5
│   └── failure v0.1.5
│       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── rustfix v0.4.4
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       └── rustwide v0.3.2
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── quote v0.6.8
│   ├── failure_derive v0.1.5 (*)
│   ├── serde_derive v1.0.80
│   │   ├── crates-index-diff v4.0.1
│   │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   ├── rusoto_core v0.40.0
│   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   └── rusoto_s3 v0.40.0
│   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   ├── rusoto_credential v0.40.0
│   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   └── rusoto_core v0.40.0 (*)
│   │   ├── rustfix v0.4.4 (*)
│   │   └── serde v1.0.84
│   │       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       ├── chrono v0.4.7
│   │       │   ├── rusoto_credential v0.40.0 (*)
│   │       │   └── systemstat v0.1.4
│   │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── crates-index-diff v4.0.1 (*)
│   │       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       ├── reqwest v0.9.2
│   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   └── rustwide v0.3.2 (*)
│   │       ├── rusoto_core v0.40.0 (*)
│   │       ├── rusoto_credential v0.40.0 (*)
│   │       ├── rustfix v0.4.4 (*)
│   │       ├── rustwide v0.3.2 (*)
│   │       ├── semver v0.9.0
│   │       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   └── rustc_version v0.2.3
│   │       │       [build-dependencies]
│   │       │       ├── im-rc v13.0.0
│   │       │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       │       ├── parking_lot_core v0.3.1
│   │       │       │   └── parking_lot v0.6.4
│   │       │       │       └── tokio-reactor v0.1.6
│   │       │       │           ├── hyper v0.12.19
│   │       │       │           │   ├── hyper-tls v0.3.1
│   │       │       │           │   │   ├── reqwest v0.9.2 (*)
│   │       │       │           │   │   └── rusoto_core v0.40.0 (*)
│   │       │       │           │   ├── reqwest v0.9.2 (*)
│   │       │       │           │   ├── rusoto_core v0.40.0 (*)
│   │       │       │           │   └── rusoto_credential v0.40.0 (*)
│   │       │       │           ├── tokio v0.1.11
│   │       │       │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │       │           │   ├── hyper v0.12.19 (*)
│   │       │       │           │   ├── reqwest v0.9.2 (*)
│   │       │       │           │   ├── rusoto_core v0.40.0 (*)
│   │       │       │           │   └── rustwide v0.3.2 (*)
│   │       │       │           ├── tokio-process v0.2.3
│   │       │       │           │   ├── rusoto_credential v0.40.0 (*)
│   │       │       │           │   └── rustwide v0.3.2 (*)
│   │       │       │           ├── tokio-signal v0.2.7
│   │       │       │           │   └── tokio-process v0.2.3 (*)
│   │       │       │           ├── tokio-tcp v0.1.2
│   │       │       │           │   ├── hyper v0.12.19 (*)
│   │       │       │           │   └── tokio v0.1.11 (*)
│   │       │       │           ├── tokio-udp v0.1.2
│   │       │       │           │   └── tokio v0.1.11 (*)
│   │       │       │           └── tokio-uds v0.2.2
│   │       │       │               └── tokio v0.1.11 (*)
│   │       │       └── rusoto_core v0.40.0 (*)
│   │       ├── serde_ignored v0.0.4
│   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       ├── serde_json v1.0.32
│   │       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       │   ├── crates-index-diff v4.0.1 (*)
│   │       │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       │   ├── reqwest v0.9.2 (*)
│   │       │   ├── rusoto_core v0.40.0 (*)
│   │       │   ├── rusoto_credential v0.40.0 (*)
│   │       │   ├── rustfix v0.4.4 (*)
│   │       │   └── rustwide v0.3.2 (*)
│   │       │   [build-dependencies]
│   │       │   └── markup5ever v0.7.2
│   │       │       └── html5ever v0.22.3
│   │       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   [dev-dependencies]
│   │       │   └── rusoto_core v0.40.0 (*)
│   │       ├── serde_urlencoded v0.5.3
│   │       │   └── reqwest v0.9.2 (*)
│   │       ├── string_cache v0.7.3
│   │       │   └── markup5ever v0.7.2 (*)
│   │       ├── toml v0.4.8
│   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       │   └── rustwide v0.3.2 (*)
│   │       ├── toml v0.5.0
│   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       └── url_serde v0.2.0
│   │           └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       [build-dependencies]
│   │       └── markup5ever v0.7.2 (*)
│   │   [build-dependencies]
│   │   └── markup5ever v0.7.2 (*)
│   │   [dev-dependencies]
│   │   └── serde v1.0.84 (*)
│   ├── syn v0.15.11
│   │   ├── failure_derive v0.1.5 (*)
│   │   ├── serde_derive v1.0.80 (*)
│   │   └── synstructure v0.10.0
│   │       └── failure_derive v0.1.5 (*)
│   └── synstructure v0.10.0 (*)
├── serde_derive v1.0.80 (*)
├── syn v0.15.11 (*)
└── synstructure v0.10.0 (*)

quote v0.3.15
├── pest_derive v1.0.8
│   └── comrak v0.3.1
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── syn v0.11.11
    └── pest_derive v1.0.8 (*)

quote v0.5.2
├── string_cache_codegen v0.4.1
│   [build-dependencies]
│   ├── markup5ever v0.7.2
│   │   └── html5ever v0.22.3
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   └── string_cache v0.7.3
│       └── markup5ever v0.7.2 (*)
└── syn v0.13.11
    [build-dependencies]
    └── html5ever v0.22.3 (*)
[build-dependencies]
└── html5ever v0.22.3 (*)

quote v0.6.8
├── failure_derive v0.1.5
│   └── failure v0.1.5
│       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── rustfix v0.4.4
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       └── rustwide v0.3.2
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── serde_derive v1.0.80
│   ├── crates-index-diff v4.0.1
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── rusoto_core v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_s3 v0.40.0
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── rusoto_credential v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_core v0.40.0 (*)
│   ├── rustfix v0.4.4 (*)
│   └── serde v1.0.84
│       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── chrono v0.4.7
│       │   ├── rusoto_credential v0.40.0 (*)
│       │   └── systemstat v0.1.4
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── crates-index-diff v4.0.1 (*)
│       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── reqwest v0.9.2
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustwide v0.3.2 (*)
│       ├── rusoto_core v0.40.0 (*)
│       ├── rusoto_credential v0.40.0 (*)
│       ├── rustfix v0.4.4 (*)
│       ├── rustwide v0.3.2 (*)
│       ├── semver v0.9.0
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustc_version v0.2.3
│       │       [build-dependencies]
│       │       ├── im-rc v13.0.0
│       │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │       ├── parking_lot_core v0.3.1
│       │       │   └── parking_lot v0.6.4
│       │       │       └── tokio-reactor v0.1.6
│       │       │           ├── hyper v0.12.19
│       │       │           │   ├── hyper-tls v0.3.1
│       │       │           │   │   ├── reqwest v0.9.2 (*)
│       │       │           │   │   └── rusoto_core v0.40.0 (*)
│       │       │           │   ├── reqwest v0.9.2 (*)
│       │       │           │   ├── rusoto_core v0.40.0 (*)
│       │       │           │   └── rusoto_credential v0.40.0 (*)
│       │       │           ├── tokio v0.1.11
│       │       │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │       │           │   ├── hyper v0.12.19 (*)
│       │       │           │   ├── reqwest v0.9.2 (*)
│       │       │           │   ├── rusoto_core v0.40.0 (*)
│       │       │           │   └── rustwide v0.3.2 (*)
│       │       │           ├── tokio-process v0.2.3
│       │       │           │   ├── rusoto_credential v0.40.0 (*)
│       │       │           │   └── rustwide v0.3.2 (*)
│       │       │           ├── tokio-signal v0.2.7
│       │       │           │   └── tokio-process v0.2.3 (*)
│       │       │           ├── tokio-tcp v0.1.2
│       │       │           │   ├── hyper v0.12.19 (*)
│       │       │           │   └── tokio v0.1.11 (*)
│       │       │           ├── tokio-udp v0.1.2
│       │       │           │   └── tokio v0.1.11 (*)
│       │       │           └── tokio-uds v0.2.2
│       │       │               └── tokio v0.1.11 (*)
│       │       └── rusoto_core v0.40.0 (*)
│       ├── serde_ignored v0.0.4
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── serde_json v1.0.32
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── crates-index-diff v4.0.1 (*)
│       │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── reqwest v0.9.2 (*)
│       │   ├── rusoto_core v0.40.0 (*)
│       │   ├── rusoto_credential v0.40.0 (*)
│       │   ├── rustfix v0.4.4 (*)
│       │   └── rustwide v0.3.2 (*)
│       │   [build-dependencies]
│       │   └── markup5ever v0.7.2
│       │       └── html5ever v0.22.3
│       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   [dev-dependencies]
│       │   └── rusoto_core v0.40.0 (*)
│       ├── serde_urlencoded v0.5.3
│       │   └── reqwest v0.9.2 (*)
│       ├── string_cache v0.7.3
│       │   └── markup5ever v0.7.2 (*)
│       ├── toml v0.4.8
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustwide v0.3.2 (*)
│       ├── toml v0.5.0
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       └── url_serde v0.2.0
│           └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       [build-dependencies]
│       └── markup5ever v0.7.2 (*)
│   [build-dependencies]
│   └── markup5ever v0.7.2 (*)
│   [dev-dependencies]
│   └── serde v1.0.84 (*)
├── syn v0.15.11
│   ├── failure_derive v0.1.5 (*)
│   ├── serde_derive v1.0.80 (*)
│   └── synstructure v0.10.0
│       └── failure_derive v0.1.5 (*)
└── synstructure v0.10.0 (*)

rand v0.3.22
├── multipart v0.8.1
│   └── params v0.6.0
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── phf_generator v0.7.21
│   ├── phf_codegen v0.7.21
│   │   [build-dependencies]
│   │   ├── markup5ever v0.7.2
│   │   │   └── html5ever v0.22.3
│   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   ├── mime_guess v1.8.6
│   │   │   └── multipart v0.8.1 (*)
│   │   └── mime_guess v2.0.0-alpha.6
│   │       └── reqwest v0.9.2
│   │           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │           └── rustwide v0.3.2
│   │               └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── string_cache_codegen v0.4.1
│       [build-dependencies]
│       ├── markup5ever v0.7.2 (*)
│       └── string_cache v0.7.3
│           └── markup5ever v0.7.2 (*)
└── postgres-protocol v0.3.2
    ├── postgres v0.15.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   ├── r2d2_postgres v0.14.0
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── schemamama_postgres v0.2.3
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── postgres-shared v0.4.1
        ├── postgres v0.15.2 (*)
        └── r2d2_postgres v0.14.0 (*)

rand v0.4.3
├── num-bigint v0.1.44
│   ├── num v0.1.42
│   │   └── params v0.6.0
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   └── num-rational v0.1.42
│       └── num v0.1.42 (*)
├── rand v0.3.22
│   ├── multipart v0.8.1
│   │   └── params v0.6.0 (*)
│   ├── phf_generator v0.7.21
│   │   ├── phf_codegen v0.7.21
│   │   │   [build-dependencies]
│   │   │   ├── markup5ever v0.7.2
│   │   │   │   └── html5ever v0.22.3
│   │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   ├── mime_guess v1.8.6
│   │   │   │   └── multipart v0.8.1 (*)
│   │   │   └── mime_guess v2.0.0-alpha.6
│   │   │       └── reqwest v0.9.2
│   │   │           ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │           └── rustwide v0.3.2
│   │   │               └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── string_cache_codegen v0.4.1
│   │       [build-dependencies]
│   │       ├── markup5ever v0.7.2 (*)
│   │       └── string_cache v0.7.3
│   │           └── markup5ever v0.7.2 (*)
│   └── postgres-protocol v0.3.2
│       ├── postgres v0.15.2
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   ├── r2d2_postgres v0.14.0
│       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── schemamama_postgres v0.2.3
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       └── postgres-shared v0.4.1
│           ├── postgres v0.15.2 (*)
│           └── r2d2_postgres v0.14.0 (*)
└── tempdir v0.3.7
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── multipart v0.8.1 (*)
    └── params v0.6.0 (*)
[dev-dependencies]
└── num-bigint v0.1.44 (*)

rand v0.5.5
├── parking_lot_core v0.3.1
│   └── parking_lot v0.6.4
│       └── tokio-reactor v0.1.6
│           ├── hyper v0.12.19
│           │   ├── hyper-tls v0.3.1
│           │   │   ├── reqwest v0.9.2
│           │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│           │   │   │   └── rustwide v0.3.2
│           │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │   └── rusoto_core v0.40.0
│           │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │       └── rusoto_s3 v0.40.0
│           │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rusoto_credential v0.40.0
│           │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │       └── rusoto_core v0.40.0 (*)
│           ├── tokio v0.1.11
│           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── hyper v0.12.19 (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rustwide v0.3.2 (*)
│           ├── tokio-process v0.2.3
│           │   ├── rusoto_credential v0.40.0 (*)
│           │   └── rustwide v0.3.2 (*)
│           ├── tokio-signal v0.2.7
│           │   └── tokio-process v0.2.3 (*)
│           ├── tokio-tcp v0.1.2
│           │   ├── hyper v0.12.19 (*)
│           │   └── tokio v0.1.11 (*)
│           ├── tokio-udp v0.1.2
│           │   └── tokio v0.1.11 (*)
│           └── tokio-uds v0.2.2
│               └── tokio v0.1.11 (*)
├── tempfile v3.0.4
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustwide v0.3.2 (*)
├── tokio-threadpool v0.1.7
│   ├── hyper v0.12.19 (*)
│   ├── tokio v0.1.11 (*)
│   └── tokio-fs v0.1.3
│       └── tokio v0.1.11 (*)
└── uuid v0.7.1
    └── reqwest v0.9.2 (*)

rand_core v0.2.2
└── rand v0.5.5
    ├── parking_lot_core v0.3.1
    │   └── parking_lot v0.6.4
    │       └── tokio-reactor v0.1.6
    │           ├── hyper v0.12.19
    │           │   ├── hyper-tls v0.3.1
    │           │   │   ├── reqwest v0.9.2
    │           │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │           │   │   │   └── rustwide v0.3.2
    │           │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │           │   │   └── rusoto_core v0.40.0
    │           │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │           │   │       └── rusoto_s3 v0.40.0
    │           │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │           │   ├── reqwest v0.9.2 (*)
    │           │   ├── rusoto_core v0.40.0 (*)
    │           │   └── rusoto_credential v0.40.0
    │           │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │           │       └── rusoto_core v0.40.0 (*)
    │           ├── tokio v0.1.11
    │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │           │   ├── hyper v0.12.19 (*)
    │           │   ├── reqwest v0.9.2 (*)
    │           │   ├── rusoto_core v0.40.0 (*)
    │           │   └── rustwide v0.3.2 (*)
    │           ├── tokio-process v0.2.3
    │           │   ├── rusoto_credential v0.40.0 (*)
    │           │   └── rustwide v0.3.2 (*)
    │           ├── tokio-signal v0.2.7
    │           │   └── tokio-process v0.2.3 (*)
    │           ├── tokio-tcp v0.1.2
    │           │   ├── hyper v0.12.19 (*)
    │           │   └── tokio v0.1.11 (*)
    │           ├── tokio-udp v0.1.2
    │           │   └── tokio v0.1.11 (*)
    │           └── tokio-uds v0.2.2
    │               └── tokio v0.1.11 (*)
    ├── tempfile v3.0.4
    │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── rustwide v0.3.2 (*)
    ├── tokio-threadpool v0.1.7
    │   ├── hyper v0.12.19 (*)
    │   ├── tokio v0.1.11 (*)
    │   └── tokio-fs v0.1.3
    │       └── tokio v0.1.11 (*)
    └── uuid v0.7.1
        └── reqwest v0.9.2 (*)

rand_core v0.3.0
└── rand_core v0.2.2
    └── rand v0.5.5
        ├── parking_lot_core v0.3.1
        │   └── parking_lot v0.6.4
        │       └── tokio-reactor v0.1.6
        │           ├── hyper v0.12.19
        │           │   ├── hyper-tls v0.3.1
        │           │   │   ├── reqwest v0.9.2
        │           │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
        │           │   │   │   └── rustwide v0.3.2
        │           │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │           │   │   └── rusoto_core v0.40.0
        │           │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │           │   │       └── rusoto_s3 v0.40.0
        │           │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │           │   ├── reqwest v0.9.2 (*)
        │           │   ├── rusoto_core v0.40.0 (*)
        │           │   └── rusoto_credential v0.40.0
        │           │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │           │       └── rusoto_core v0.40.0 (*)
        │           ├── tokio v0.1.11
        │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │           │   ├── hyper v0.12.19 (*)
        │           │   ├── reqwest v0.9.2 (*)
        │           │   ├── rusoto_core v0.40.0 (*)
        │           │   └── rustwide v0.3.2 (*)
        │           ├── tokio-process v0.2.3
        │           │   ├── rusoto_credential v0.40.0 (*)
        │           │   └── rustwide v0.3.2 (*)
        │           ├── tokio-signal v0.2.7
        │           │   └── tokio-process v0.2.3 (*)
        │           ├── tokio-tcp v0.1.2
        │           │   ├── hyper v0.12.19 (*)
        │           │   └── tokio v0.1.11 (*)
        │           ├── tokio-udp v0.1.2
        │           │   └── tokio v0.1.11 (*)
        │           └── tokio-uds v0.2.2
        │               └── tokio v0.1.11 (*)
        ├── tempfile v3.0.4
        │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
        │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │   └── rustwide v0.3.2 (*)
        ├── tokio-threadpool v0.1.7
        │   ├── hyper v0.12.19 (*)
        │   ├── tokio v0.1.11 (*)
        │   └── tokio-fs v0.1.3
        │       └── tokio v0.1.11 (*)
        └── uuid v0.7.1
            └── reqwest v0.9.2 (*)

regex v0.2.11
└── handlebars v0.24.2
    └── handlebars-iron v0.22.0
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

regex v1.1.7
├── comrak v0.3.1
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── env_logger v0.6.0
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── globset v0.4.3
│   └── ignore v0.4.7
│       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── ignore v0.4.7 (*)
└── rusoto_credential v0.40.0
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── rusoto_core v0.40.0
        ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        └── rusoto_s3 v0.40.0
            └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

regex-syntax v0.5.6
└── regex v0.2.11
    └── handlebars v0.24.2
        └── handlebars-iron v0.22.0
            └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

regex-syntax v0.6.7
└── regex v1.1.7
    ├── comrak v0.3.1
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── env_logger v0.6.0
    │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
    │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── globset v0.4.3
    │   └── ignore v0.4.7
    │       └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
    ├── ignore v0.4.7 (*)
    └── rusoto_credential v0.40.0
        ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        └── rusoto_core v0.40.0
            ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
            └── rusoto_s3 v0.40.0
                └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

safemem v0.2.0
└── base64 v0.6.0
    ├── hyper v0.10.13
    │   └── iron v0.5.1
    │       ├── bodyparser v0.5.0
    │       │   ├── params v0.6.0
    │       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │       │   └── urlencoded v0.5.0
    │       │       └── params v0.6.0 (*)
    │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── handlebars-iron v0.22.0
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── mount v0.3.0
    │       │   └── staticfile v0.4.0
    │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── params v0.6.0 (*)
    │       ├── persistent v0.3.0
    │       │   └── bodyparser v0.5.0 (*)
    │       ├── router v0.5.1
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── staticfile v0.4.0 (*)
    │       └── urlencoded v0.5.0 (*)
    └── postgres-protocol v0.3.2
        ├── postgres v0.15.2
        │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │   ├── r2d2_postgres v0.14.0
        │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        │   └── schemamama_postgres v0.2.3
        │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        └── postgres-shared v0.4.1
            ├── postgres v0.15.2 (*)
            └── r2d2_postgres v0.14.0 (*)

safemem v0.3.0
└── base64 v0.9.3
    ├── badge v0.2.0 (/home/joshua/Documents/Programming/rust/docs.rs/src/web/badge)
    │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    ├── reqwest v0.9.2
    │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── rustwide v0.3.2
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── rusoto_core v0.40.0
        ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
        └── rusoto_s3 v0.40.0
            └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

scopeguard v0.3.3
├── crossbeam-epoch v0.5.2
│   └── crossbeam-deque v0.6.1
│       └── tokio-threadpool v0.1.7
│           ├── hyper v0.12.19
│           │   ├── hyper-tls v0.3.1
│           │   │   ├── reqwest v0.9.2
│           │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│           │   │   │   └── rustwide v0.3.2
│           │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │   └── rusoto_core v0.40.0
│           │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   │       └── rusoto_s3 v0.40.0
│           │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rusoto_credential v0.40.0
│           │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │       └── rusoto_core v0.40.0 (*)
│           ├── tokio v0.1.11
│           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│           │   ├── hyper v0.12.19 (*)
│           │   ├── reqwest v0.9.2 (*)
│           │   ├── rusoto_core v0.40.0 (*)
│           │   └── rustwide v0.3.2 (*)
│           └── tokio-fs v0.1.3
│               └── tokio v0.1.11 (*)
└── lock_api v0.1.4
    └── parking_lot v0.6.4
        └── tokio-reactor v0.1.6
            ├── hyper v0.12.19 (*)
            ├── tokio v0.1.11 (*)
            ├── tokio-process v0.2.3
            │   ├── rusoto_credential v0.40.0 (*)
            │   └── rustwide v0.3.2 (*)
            ├── tokio-signal v0.2.7
            │   └── tokio-process v0.2.3 (*)
            ├── tokio-tcp v0.1.2
            │   ├── hyper v0.12.19 (*)
            │   └── tokio v0.1.11 (*)
            ├── tokio-udp v0.1.2
            │   └── tokio v0.1.11 (*)
            └── tokio-uds v0.2.2
                └── tokio v0.1.11 (*)

scopeguard v1.0.0
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

serde v0.8.23
├── bodyparser v0.5.0
│   ├── params v0.6.0
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   └── urlencoded v0.5.0
│       └── params v0.6.0 (*)
└── serde_json v0.8.6
    ├── bodyparser v0.5.0 (*)
    └── params v0.6.0 (*)

serde v1.0.84
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── chrono v0.4.7
│   ├── rusoto_credential v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_core v0.40.0
│   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       └── rusoto_s3 v0.40.0
│   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── systemstat v0.1.4
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── crates-index-diff v4.0.1
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── reqwest v0.9.2
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustwide v0.3.2
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── rusoto_core v0.40.0 (*)
├── rusoto_credential v0.40.0 (*)
├── rustfix v0.4.4
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── rustwide v0.3.2 (*)
├── semver v0.9.0
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustc_version v0.2.3
│       [build-dependencies]
│       ├── im-rc v13.0.0
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── parking_lot_core v0.3.1
│       │   └── parking_lot v0.6.4
│       │       └── tokio-reactor v0.1.6
│       │           ├── hyper v0.12.19
│       │           │   ├── hyper-tls v0.3.1
│       │           │   │   ├── reqwest v0.9.2 (*)
│       │           │   │   └── rusoto_core v0.40.0 (*)
│       │           │   ├── reqwest v0.9.2 (*)
│       │           │   ├── rusoto_core v0.40.0 (*)
│       │           │   └── rusoto_credential v0.40.0 (*)
│       │           ├── tokio v0.1.11
│       │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │           │   ├── hyper v0.12.19 (*)
│       │           │   ├── reqwest v0.9.2 (*)
│       │           │   ├── rusoto_core v0.40.0 (*)
│       │           │   └── rustwide v0.3.2 (*)
│       │           ├── tokio-process v0.2.3
│       │           │   ├── rusoto_credential v0.40.0 (*)
│       │           │   └── rustwide v0.3.2 (*)
│       │           ├── tokio-signal v0.2.7
│       │           │   └── tokio-process v0.2.3 (*)
│       │           ├── tokio-tcp v0.1.2
│       │           │   ├── hyper v0.12.19 (*)
│       │           │   └── tokio v0.1.11 (*)
│       │           ├── tokio-udp v0.1.2
│       │           │   └── tokio v0.1.11 (*)
│       │           └── tokio-uds v0.2.2
│       │               └── tokio v0.1.11 (*)
│       └── rusoto_core v0.40.0 (*)
├── serde_ignored v0.0.4
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── serde_json v1.0.32
│   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── crates-index-diff v4.0.1 (*)
│   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── reqwest v0.9.2 (*)
│   ├── rusoto_core v0.40.0 (*)
│   ├── rusoto_credential v0.40.0 (*)
│   ├── rustfix v0.4.4 (*)
│   └── rustwide v0.3.2 (*)
│   [build-dependencies]
│   └── markup5ever v0.7.2
│       └── html5ever v0.22.3
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   [dev-dependencies]
│   └── rusoto_core v0.40.0 (*)
├── serde_urlencoded v0.5.3
│   └── reqwest v0.9.2 (*)
├── string_cache v0.7.3
│   └── markup5ever v0.7.2 (*)
├── toml v0.4.8
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustwide v0.3.2 (*)
├── toml v0.5.0
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
└── url_serde v0.2.0
    └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
[build-dependencies]
└── markup5ever v0.7.2 (*)

serde_json v0.8.6
├── bodyparser v0.5.0
│   ├── params v0.6.0
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   └── urlencoded v0.5.0
│       └── params v0.6.0 (*)
└── params v0.6.0 (*)

serde_json v1.0.32
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── crates-index-diff v4.0.1
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
├── reqwest v0.9.2
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rustwide v0.3.2
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── rusoto_core v0.40.0
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rusoto_s3 v0.40.0
│       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── rusoto_credential v0.40.0
│   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   └── rusoto_core v0.40.0 (*)
├── rustfix v0.4.4
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
└── rustwide v0.3.2 (*)
[build-dependencies]
└── markup5ever v0.7.2
    └── html5ever v0.22.3
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
[dev-dependencies]
└── rusoto_core v0.40.0 (*)

syn v0.11.11
└── pest_derive v1.0.8
    └── comrak v0.3.1
        └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

syn v0.13.11
[build-dependencies]
└── html5ever v0.22.3
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

syn v0.15.11
├── failure_derive v0.1.5
│   └── failure v0.1.5
│       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── rustfix v0.4.4
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       └── rustwide v0.3.2
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
├── serde_derive v1.0.80
│   ├── crates-index-diff v4.0.1
│   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   ├── rusoto_core v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_s3 v0.40.0
│   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── rusoto_credential v0.40.0
│   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   └── rusoto_core v0.40.0 (*)
│   ├── rustfix v0.4.4 (*)
│   └── serde v1.0.84
│       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── chrono v0.4.7
│       │   ├── rusoto_credential v0.40.0 (*)
│       │   └── systemstat v0.1.4
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── crates-index-diff v4.0.1 (*)
│       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── reqwest v0.9.2
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustwide v0.3.2 (*)
│       ├── rusoto_core v0.40.0 (*)
│       ├── rusoto_credential v0.40.0 (*)
│       ├── rustfix v0.4.4 (*)
│       ├── rustwide v0.3.2 (*)
│       ├── semver v0.9.0
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustc_version v0.2.3
│       │       [build-dependencies]
│       │       ├── im-rc v13.0.0
│       │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │       ├── parking_lot_core v0.3.1
│       │       │   └── parking_lot v0.6.4
│       │       │       └── tokio-reactor v0.1.6
│       │       │           ├── hyper v0.12.19
│       │       │           │   ├── hyper-tls v0.3.1
│       │       │           │   │   ├── reqwest v0.9.2 (*)
│       │       │           │   │   └── rusoto_core v0.40.0 (*)
│       │       │           │   ├── reqwest v0.9.2 (*)
│       │       │           │   ├── rusoto_core v0.40.0 (*)
│       │       │           │   └── rusoto_credential v0.40.0 (*)
│       │       │           ├── tokio v0.1.11
│       │       │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │       │           │   ├── hyper v0.12.19 (*)
│       │       │           │   ├── reqwest v0.9.2 (*)
│       │       │           │   ├── rusoto_core v0.40.0 (*)
│       │       │           │   └── rustwide v0.3.2 (*)
│       │       │           ├── tokio-process v0.2.3
│       │       │           │   ├── rusoto_credential v0.40.0 (*)
│       │       │           │   └── rustwide v0.3.2 (*)
│       │       │           ├── tokio-signal v0.2.7
│       │       │           │   └── tokio-process v0.2.3 (*)
│       │       │           ├── tokio-tcp v0.1.2
│       │       │           │   ├── hyper v0.12.19 (*)
│       │       │           │   └── tokio v0.1.11 (*)
│       │       │           ├── tokio-udp v0.1.2
│       │       │           │   └── tokio v0.1.11 (*)
│       │       │           └── tokio-uds v0.2.2
│       │       │               └── tokio v0.1.11 (*)
│       │       └── rusoto_core v0.40.0 (*)
│       ├── serde_ignored v0.0.4
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       ├── serde_json v1.0.32
│       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── crates-index-diff v4.0.1 (*)
│       │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       │   ├── reqwest v0.9.2 (*)
│       │   ├── rusoto_core v0.40.0 (*)
│       │   ├── rusoto_credential v0.40.0 (*)
│       │   ├── rustfix v0.4.4 (*)
│       │   └── rustwide v0.3.2 (*)
│       │   [build-dependencies]
│       │   └── markup5ever v0.7.2
│       │       └── html5ever v0.22.3
│       │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   [dev-dependencies]
│       │   └── rusoto_core v0.40.0 (*)
│       ├── serde_urlencoded v0.5.3
│       │   └── reqwest v0.9.2 (*)
│       ├── string_cache v0.7.3
│       │   └── markup5ever v0.7.2 (*)
│       ├── toml v0.4.8
│       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       │   └── rustwide v0.3.2 (*)
│       ├── toml v0.5.0
│       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       └── url_serde v0.2.0
│           └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│       [build-dependencies]
│       └── markup5ever v0.7.2 (*)
│   [build-dependencies]
│   └── markup5ever v0.7.2 (*)
│   [dev-dependencies]
│   └── serde v1.0.84 (*)
└── synstructure v0.10.0
    └── failure_derive v0.1.5 (*)

toml v0.4.8
├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

toml v0.5.0
└── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

unicase v1.4.2
├── hyper v0.10.13
│   └── iron v0.5.1
│       ├── bodyparser v0.5.0
│       │   ├── params v0.6.0
│       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│       │   └── urlencoded v0.5.0
│       │       └── params v0.6.0 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── handlebars-iron v0.22.0
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── mount v0.3.0
│       │   └── staticfile v0.4.0
│       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── params v0.6.0 (*)
│       ├── persistent v0.3.0
│       │   └── bodyparser v0.5.0 (*)
│       ├── router v0.5.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       ├── staticfile v0.4.0 (*)
│       └── urlencoded v0.5.0 (*)
├── mime_guess v1.8.6
│   └── multipart v0.8.1
│       └── params v0.6.0 (*)
├── mime_guess v2.0.0-alpha.6
│   └── reqwest v0.9.2
│       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│       └── rustwide v0.3.2
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
└── phf_shared v0.7.21
    ├── phf v0.7.21
    │   ├── markup5ever v0.7.2
    │   │   └── html5ever v0.22.3
    │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   ├── mime_guess v1.8.6 (*)
    │   ├── mime_guess v2.0.0-alpha.6 (*)
    │   └── postgres-shared v0.4.1
    │       ├── postgres v0.15.2
    │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       │   ├── r2d2_postgres v0.14.0
    │       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       │   └── schemamama_postgres v0.2.3
    │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       └── r2d2_postgres v0.14.0 (*)
    ├── phf_codegen v0.7.21
    │   [build-dependencies]
    │   ├── markup5ever v0.7.2 (*)
    │   ├── mime_guess v1.8.6 (*)
    │   └── mime_guess v2.0.0-alpha.6 (*)
    ├── phf_generator v0.7.21
    │   ├── phf_codegen v0.7.21 (*)
    │   └── string_cache_codegen v0.4.1
    │       [build-dependencies]
    │       ├── markup5ever v0.7.2 (*)
    │       └── string_cache v0.7.3
    │           └── markup5ever v0.7.2 (*)
    ├── string_cache v0.7.3 (*)
    └── string_cache_codegen v0.4.1 (*)
[build-dependencies]
├── mime_guess v1.8.6 (*)
└── mime_guess v2.0.0-alpha.6 (*)

unicase v2.2.0
└── mime v0.3.9
    ├── mime_guess v2.0.0-alpha.6
    │   └── reqwest v0.9.2
    │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
    │       └── rustwide v0.3.2
    │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    └── reqwest v0.9.2 (*)

unicode-xid v0.0.4
├── syn v0.11.11
│   └── pest_derive v1.0.8
│       └── comrak v0.3.1
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── synom v0.11.3
    └── syn v0.11.11 (*)

unicode-xid v0.1.0
├── proc-macro2 v0.3.8
│   ├── quote v0.5.2
│   │   ├── string_cache_codegen v0.4.1
│   │   │   [build-dependencies]
│   │   │   ├── markup5ever v0.7.2
│   │   │   │   └── html5ever v0.22.3
│   │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
│   │   │   └── string_cache v0.7.3
│   │   │       └── markup5ever v0.7.2 (*)
│   │   └── syn v0.13.11
│   │       [build-dependencies]
│   │       └── html5ever v0.22.3 (*)
│   │   [build-dependencies]
│   │   └── html5ever v0.22.3 (*)
│   ├── string_cache_codegen v0.4.1 (*)
│   └── syn v0.13.11 (*)
│   [build-dependencies]
│   └── html5ever v0.22.3 (*)
├── proc-macro2 v0.4.20
│   ├── failure_derive v0.1.5
│   │   └── failure v0.1.5
│   │       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │       ├── rustfix v0.4.4
│   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │       └── rustwide v0.3.2
│   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   ├── quote v0.6.8
│   │   ├── failure_derive v0.1.5 (*)
│   │   ├── serde_derive v1.0.80
│   │   │   ├── crates-index-diff v4.0.1
│   │   │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │   ├── rusoto_core v0.40.0
│   │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   │   └── rusoto_s3 v0.40.0
│   │   │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   ├── rusoto_credential v0.40.0
│   │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │   │   └── rusoto_core v0.40.0 (*)
│   │   │   ├── rustfix v0.4.4 (*)
│   │   │   └── serde v1.0.84
│   │   │       ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       ├── chrono v0.4.7
│   │   │       │   ├── rusoto_credential v0.40.0 (*)
│   │   │       │   └── systemstat v0.1.4
│   │   │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │       ├── crates-index-diff v4.0.1 (*)
│   │   │       ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       ├── reqwest v0.9.2
│   │   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │       │   └── rustwide v0.3.2 (*)
│   │   │       ├── rusoto_core v0.40.0 (*)
│   │   │       ├── rusoto_credential v0.40.0 (*)
│   │   │       ├── rustfix v0.4.4 (*)
│   │   │       ├── rustwide v0.3.2 (*)
│   │   │       ├── semver v0.9.0
│   │   │       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │       │   └── rustc_version v0.2.3
│   │   │       │       [build-dependencies]
│   │   │       │       ├── im-rc v13.0.0
│   │   │       │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       │       ├── parking_lot_core v0.3.1
│   │   │       │       │   └── parking_lot v0.6.4
│   │   │       │       │       └── tokio-reactor v0.1.6
│   │   │       │       │           ├── hyper v0.12.19
│   │   │       │       │           │   ├── hyper-tls v0.3.1
│   │   │       │       │           │   │   ├── reqwest v0.9.2 (*)
│   │   │       │       │           │   │   └── rusoto_core v0.40.0 (*)
│   │   │       │       │           │   ├── reqwest v0.9.2 (*)
│   │   │       │       │           │   ├── rusoto_core v0.40.0 (*)
│   │   │       │       │           │   └── rusoto_credential v0.40.0 (*)
│   │   │       │       │           ├── tokio v0.1.11
│   │   │       │       │           │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │       │       │           │   ├── hyper v0.12.19 (*)
│   │   │       │       │           │   ├── reqwest v0.9.2 (*)
│   │   │       │       │           │   ├── rusoto_core v0.40.0 (*)
│   │   │       │       │           │   └── rustwide v0.3.2 (*)
│   │   │       │       │           ├── tokio-process v0.2.3
│   │   │       │       │           │   ├── rusoto_credential v0.40.0 (*)
│   │   │       │       │           │   └── rustwide v0.3.2 (*)
│   │   │       │       │           ├── tokio-signal v0.2.7
│   │   │       │       │           │   └── tokio-process v0.2.3 (*)
│   │   │       │       │           ├── tokio-tcp v0.1.2
│   │   │       │       │           │   ├── hyper v0.12.19 (*)
│   │   │       │       │           │   └── tokio v0.1.11 (*)
│   │   │       │       │           ├── tokio-udp v0.1.2
│   │   │       │       │           │   └── tokio v0.1.11 (*)
│   │   │       │       │           └── tokio-uds v0.2.2
│   │   │       │       │               └── tokio v0.1.11 (*)
│   │   │       │       └── rusoto_core v0.40.0 (*)
│   │   │       ├── serde_ignored v0.0.4
│   │   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       ├── serde_json v1.0.32
│   │   │       │   ├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       │   ├── crates-index-diff v4.0.1 (*)
│   │   │       │   ├── crates-io v0.27.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       │   ├── reqwest v0.9.2 (*)
│   │   │       │   ├── rusoto_core v0.40.0 (*)
│   │   │       │   ├── rusoto_credential v0.40.0 (*)
│   │   │       │   ├── rustfix v0.4.4 (*)
│   │   │       │   └── rustwide v0.3.2 (*)
│   │   │       │   [build-dependencies]
│   │   │       │   └── markup5ever v0.7.2 (*)
│   │   │       │   [dev-dependencies]
│   │   │       │   └── rusoto_core v0.40.0 (*)
│   │   │       ├── serde_urlencoded v0.5.3
│   │   │       │   └── reqwest v0.9.2 (*)
│   │   │       ├── string_cache v0.7.3 (*)
│   │   │       ├── toml v0.4.8
│   │   │       │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
│   │   │       │   └── rustwide v0.3.2 (*)
│   │   │       ├── toml v0.5.0
│   │   │       │   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       └── url_serde v0.2.0
│   │   │           └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
│   │   │       [build-dependencies]
│   │   │       └── markup5ever v0.7.2 (*)
│   │   │   [build-dependencies]
│   │   │   └── markup5ever v0.7.2 (*)
│   │   │   [dev-dependencies]
│   │   │   └── serde v1.0.84 (*)
│   │   ├── syn v0.15.11
│   │   │   ├── failure_derive v0.1.5 (*)
│   │   │   ├── serde_derive v1.0.80 (*)
│   │   │   └── synstructure v0.10.0
│   │   │       └── failure_derive v0.1.5 (*)
│   │   └── synstructure v0.10.0 (*)
│   ├── serde_derive v1.0.80 (*)
│   ├── syn v0.15.11 (*)
│   └── synstructure v0.10.0 (*)
├── syn v0.13.11 (*)
├── syn v0.15.11 (*)
└── synstructure v0.10.0 (*)

walkdir v0.1.8
└── handlebars-iron v0.22.0
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)

walkdir v2.2.8
├── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f)
│   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
├── ignore v0.4.7
│   └── cargo v0.39.0 (https://github.com/rust-lang/cargo.git#677a180f) (*)
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)

winapi v0.2.8
├── kernel32-sys v0.2.2
│   └── walkdir v0.1.8
│       └── handlebars-iron v0.22.0
│           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
└── walkdir v0.1.8 (*)

winapi v0.3.6
└── rustwide v0.3.2
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs)
[dev-dependencies]
└── time v0.1.40
    ├── chrono v0.4.7
    │   ├── rusoto_credential v0.40.0
    │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   │   └── rusoto_core v0.40.0
    │   │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   │       └── rusoto_s3 v0.40.0
    │   │           └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── systemstat v0.1.4
    │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    ├── hyper v0.10.13
    │   └── iron v0.5.1
    │       ├── bodyparser v0.5.0
    │       │   ├── params v0.6.0
    │       │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       │   └── urlencoded v0.5.0
    │       │       └── params v0.6.0 (*)
    │       ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── handlebars-iron v0.22.0
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── mount v0.3.0
    │       │   └── staticfile v0.4.0
    │       │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── params v0.6.0 (*)
    │       ├── persistent v0.3.0
    │       │   └── bodyparser v0.5.0 (*)
    │       ├── router v0.5.1
    │       │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │       ├── staticfile v0.4.0 (*)
    │       └── urlencoded v0.5.0 (*)
    ├── hyper v0.12.19
    │   ├── hyper-tls v0.3.1
    │   │   ├── reqwest v0.9.2
    │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   │   │   └── rustwide v0.3.2 (*)
    │   │   └── rusoto_core v0.40.0 (*)
    │   ├── reqwest v0.9.2 (*)
    │   ├── rusoto_core v0.40.0 (*)
    │   └── rusoto_credential v0.40.0 (*)
    ├── postgres-shared v0.4.1
    │   ├── postgres v0.15.2
    │   │   ├── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   │   ├── r2d2_postgres v0.14.0
    │   │   │   └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   │   └── schemamama_postgres v0.2.3
    │   │       └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
    │   └── r2d2_postgres v0.14.0 (*)
    ├── rusoto_core v0.40.0 (*)
    ├── staticfile v0.4.0 (*)
    └── systemstat v0.1.4 (*)
    [build-dependencies]
    └── cratesfyi v0.6.0 (/home/joshua/Documents/Programming/rust/docs.rs) (*)
@jyn514 jyn514 added the wishlist label Nov 1, 2019
@jyn514
Copy link
Member Author

jyn514 commented Nov 2, 2019

Issues:

  • html5ever 0.25+ removes rcdom, I think the only way to use it is to explicitly depend on the git URL. We should probably change src/utils/html.rs to use a different API.
  • handlebars_iron 24+ requires web::page::Page to implement serde::ser::Serialize
  • iron 0.6 gives errors I don't understand about Plugin not being implemented for Params this was because handlebars_iron was out of sync with iron
  • iron 0.6 gives errors that it expects a closure but got a staticfile
  • iron 0.6 changed some Options to Results

@jyn514
Copy link
Member Author

jyn514 commented Nov 2, 2019

Removed about 15 dependencies in https://github.com/jyn514/docs.rs/tree/versions. The rest of the duplicates are waiting on the issues above.

jyn514 added a commit to jyn514/rustwide that referenced this issue Nov 2, 2019
This allows docs.rs to only have one version of toml, not both 0.4 and
0.5. See rust-lang/docs.rs#459 for context.
@jyn514
Copy link
Member Author

jyn514 commented Nov 2, 2019

Reqwest and cargo have a lot of duplicated dependencies when combined, but not separately, probably because we're installing cargo from git and it uses a lot of latest version. Not sure there's a good solution for that.

@pietroalbini
Copy link
Member

By the way, it would be ideal to completly remove the usage of cargo as a library, as it just causes problem when it's not updated and a crate makes use of new features (for example #400). That would probably solve part of this issue.

@jyn514
Copy link
Member Author

jyn514 commented Nov 2, 2019

Wow, it turns out cargo was completely unused! That just knocked off 40 dependencies at absolutely no cost :)

@jyn514 jyn514 mentioned this issue Jan 8, 2020
2 tasks
@jyn514
Copy link
Member Author

jyn514 commented Jan 14, 2020

Upgrade steps:

  • iron -> 0.6
    • handlebars_iron -> 0.28
      • rustc_serialize -> serde_json
        • switch over JSON parsing incrementally (but how would we derive Serialize for rust_serialize::Json??)
    • router -> 0.6
    • staticfile -> 0.5
    • params -> 0.8
  • reqwest -> 0.10
  • postgres -> 0.17
    • schemamama_postgres -> 0.3.0

@pietroalbini
Copy link
Member

switch over JSON parsing incrementally

If we migrate stuff interacting with the database I'd like to see tests that check the serialized string doesn't change (landing the tests before in a separate PR).

(but how would we derive Serialize for rust_serialize::Json??)

Well, if we create a wrapper type like:

struct JsonCompat(rustc_serialize::json::Json);

... we can manually impl serde::Serialize for JsonCompat. Serde also has its own Json type.

find a replacement for schemamama_postgres, which breaks with anything after 0.15

To be honest, do we really need that dependency? I just rolled out it myself for Crater, and it's like 30 lines of code. Especially if it's holding back our migration efforts I'd consider removing it completly.

@jyn514
Copy link
Member Author

jyn514 commented Jan 14, 2020

switch over JSON parsing incrementally

If we migrate stuff interacting with the database I'd like to see tests that check the serialized string doesn't change (landing the tests before in a separate PR).

Good call, I can pull a few of the bigger examples out of the DB as test cases.

(but how would we derive Serialize for rust_serialize::Json??)

Well, if we create a wrapper type like:

struct JsonCompat(rustc_serialize::json::Json);

... we can manually impl serde::Serialize for JsonCompat. Serde also has its own Json type.

Would it make sense to convert all rustc_serialize structures to serde's Json directly? I think that would be about the same effort as a wrapper.

find a replacement for schemamama_postgres, which breaks with anything after 0.15

To be honest, do we really need that dependency? I just rolled out it myself for Crater, and it's like 30 lines of code. Especially if it's holding back our migration efforts I'd consider removing it completly.

Ok great! We can just reuse that code then, I'm always in favor of getting rid of dependencies.

@pietroalbini
Copy link
Member

Would it make sense to convert all rustc_serialize structures to serde's Json directly? I think that would be about the same effort as a wrapper.

Well, it depends if we want to do the switch across the whole application at the same time or gradually. I'd sort of prefer gradually...

@jyn514
Copy link
Member Author

jyn514 commented Mar 15, 2020

find a replacement for schemamama_postgres, which breaks with anything after 0.15

To be honest, do we really need that dependency?

This is no longer an issue, see SkylerLipthay/schemamama_postgres#7 (comment)

@jyn514
Copy link
Member Author

jyn514 commented Apr 10, 2020

Would it make sense to convert all rustc_serialize structures to serde's Json directly? I think that would be about the same effort as a wrapper.

Update: @Kixiron tried to work on it and it goes down a very deep rabbit hole:

  • time 0.1 doesn't support serde, only time 0.2
  • iron 0.5.1 only supports time 0.1, so we'd have to have both versions
  • For some structs, only some of the members are serialized, so we can't use derive(Serialize)

@Kixiron
Copy link
Member

Kixiron commented Apr 10, 2020

I think I've come up with a good combined solution, actually. Like Pietro's earlier solution, I think I'm going to make a ToJson trait, much like what rustc_serialize offers. This will allow much the sane effects that the original impl lends, like only serializing some things, but with the bonus of allowing us to exchange backends much easier. Hopefully, this will allow an upgrade to serde/serde_json without having to touch time at all. By the way things are looking right now, we may not even need serde itself and may be able to just use serde_json

@pietroalbini
Copy link
Member

For some structs, only some of the members are serialized, so we can't use derive(Serialize)

Couldn't you use #[serde(skip)] on the members we don't want to serialize?

I think I've come up with a good combined solution, actually. Like Pietro's earlier solution, I think I'm going to make a ToJson trait, much like what rustc_serialize offers. This will allow much the sane effects that the original impl lends, like only serializing some things, but with the bonus of allowing us to exchange backends much easier. Hopefully, this will allow an upgrade to serde/serde_json without having to touch time at all. By the way things are looking right now, we may not even need serde itself and may be able to just use serde_json

I still prefer that we use derives whenever possible.

@Kixiron
Copy link
Member

Kixiron commented Apr 14, 2020

Yah, I figured it all out in #709, there was some weirdness but I got it

@jyn514 jyn514 added E-hard Effort: This will require a lot of work P-medium Medium priority and removed wishlist labels Jun 27, 2020
@jyn514
Copy link
Member Author

jyn514 commented Jun 27, 2020

This has since gotten worse due to #814. Fixing it will require debugging the cause of the regression in #799

@jyn514
Copy link
Member Author

jyn514 commented Jul 26, 2020

Once #910 is merged we can finally make progress on this 🎉

These are the duplicates from #910:

autocfg v0.1.7
[build-dependencies]
├── rand v0.6.5
│   └── phf_generator v0.7.24
│       └── phf_codegen v0.7.24
│           [build-dependencies]
│           └── mime_guess v1.8.8
│               └── multipart v0.13.6
│                   └── params v0.8.0
│                       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── rand_chacha v0.1.1
│   └── rand v0.6.5 (*)
└── rand_pcg v0.1.2
    └── rand v0.6.5 (*)

autocfg v1.0.0
[build-dependencies]
├── crossbeam-epoch v0.8.2
│   └── crossbeam-deque v0.7.3
│       ├── rayon v1.3.0
│       │   └── criterion v0.3.3
│       │       [dev-dependencies]
│       │       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       └── rayon-core v1.7.0
│           └── rayon v1.3.0 (*)
├── crossbeam-utils v0.7.2
│   ├── crossbeam-deque v0.7.3 (*)
│   ├── crossbeam-epoch v0.8.2 (*)
│   ├── crossbeam-queue v0.2.1
│   │   └── rayon-core v1.7.0 (*)
│   ├── ignore v0.4.16
│   │   └── globwalk v0.8.0
│   │       └── tera v1.3.1
│   │           └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   └── rayon-core v1.7.0 (*)
├── indexmap v1.3.2
│   └── h2 v0.2.5
│       └── hyper v0.13.6
│           ├── hyper-tls v0.4.1
│           │   ├── reqwest v0.10.6
│           │   │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│           │   │   └── rustwide v0.7.1
│           │   │       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│           │   └── rusoto_core v0.45.0
│           │       ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│           │       └── rusoto_s3 v0.45.0
│           │           └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│           ├── reqwest v0.10.6 (*)
│           ├── rusoto_core v0.45.0 (*)
│           ├── rusoto_credential v0.45.0
│           │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│           │   ├── rusoto_core v0.45.0 (*)
│           │   └── rusoto_signature v0.45.0
│           │       └── rusoto_core v0.45.0 (*)
│           └── rusoto_signature v0.45.0 (*)
├── memoffset v0.5.4
│   └── crossbeam-epoch v0.8.2 (*)
├── num-integer v0.1.42
│   ├── chrono v0.4.11
│   │   ├── chrono-tz v0.5.1
│   │   │   └── tera v1.3.1 (*)
│   │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   ├── postgres-shared v0.4.2
│   │   │   ├── postgres v0.15.2
│   │   │   │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   │   │   ├── r2d2_postgres v0.14.0
│   │   │   │   │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   │   │   └── schemamama_postgres v0.2.4
│   │   │   │       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   │   └── r2d2_postgres v0.14.0 (*)
│   │   ├── procfs v0.7.9
│   │   │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   ├── rusoto_credential v0.45.0 (*)
│   │   ├── systemstat v0.1.5
│   │   │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   │   └── tera v1.3.1 (*)
│   ├── num v0.1.42
│   │   └── params v0.8.0 (*)
│   ├── num-bigint v0.1.44
│   │   ├── num v0.1.42 (*)
│   │   └── num-rational v0.1.42
│   │       └── num v0.1.42 (*)
│   ├── num-iter v0.1.40
│   │   └── num v0.1.42 (*)
│   └── num-rational v0.1.42 (*)
├── num-iter v0.1.40 (*)
├── num-traits v0.2.11
│   ├── chrono v0.4.11 (*)
│   ├── criterion v0.3.3 (*)
│   ├── num v0.1.42 (*)
│   ├── num-bigint v0.1.44 (*)
│   ├── num-complex v0.1.43
│   │   └── num v0.1.42 (*)
│   ├── num-integer v0.1.42 (*)
│   ├── num-iter v0.1.40 (*)
│   ├── num-rational v0.1.42 (*)
│   └── plotters v0.2.14
│       └── criterion v0.3.3 (*)
└── openssl-sys v0.9.56
    ├── git2 v0.13.6
    │   ├── crates-index-diff v7.0.1
    │   │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
    │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
    │   [build-dependencies]
    │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
    ├── libgit2-sys v0.12.6+1.0.0
    │   └── git2 v0.13.6 (*)
    ├── native-tls v0.2.4
    │   ├── hyper-tls v0.4.1 (*)
    │   ├── reqwest v0.10.6 (*)
    │   └── tokio-tls v0.3.1
    │       ├── hyper-tls v0.4.1 (*)
    │       └── reqwest v0.10.6 (*)
    └── openssl v0.10.29
        └── native-tls v0.2.4 (*)

base64 v0.6.0
└── postgres-protocol v0.3.2
    ├── postgres v0.15.2 (*)
    └── postgres-shared v0.4.2 (*)

base64 v0.9.3
├── badge v0.2.0 (/home/joshua/src/rust/docs.rs/src/web/badge)
│   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
└── hyper v0.10.16
    └── iron v0.5.1
        ├── bodyparser v0.8.0
        │   ├── params v0.8.0 (*)
        │   └── urlencoded v0.6.0
        │       └── params v0.8.0 (*)
        ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
        ├── mount v0.3.0
        │   └── staticfile v0.4.0
        │       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
        ├── params v0.8.0 (*)
        ├── persistent v0.4.0
        │   └── bodyparser v0.8.0 (*)
        ├── router v0.5.1
        │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
        ├── staticfile v0.4.0 (*)
        └── urlencoded v0.6.0 (*)

base64 v0.11.0
└── rustwide v0.7.1 (*)

base64 v0.12.1
├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── reqwest v0.10.6 (*)
├── rusoto_core v0.45.0 (*)
└── rusoto_signature v0.45.0 (*)

block-buffer v0.3.3
└── sha2 v0.7.1
    └── postgres-protocol v0.3.2 (*)

block-buffer v0.7.3
└── sha-1 v0.8.2
    [build-dependencies]
    └── pest_meta v2.1.3
        └── pest_generator v2.1.3
            └── pest_derive v2.1.0
                └── tera v1.3.1 (*)

block-buffer v0.9.0
└── sha2 v0.9.1
    └── rusoto_signature v0.45.0 (*)

byte-tools v0.2.0
├── block-buffer v0.3.3 (*)
└── sha2 v0.7.1 (*)

byte-tools v0.3.1
├── block-buffer v0.7.3 (*)
└── block-padding v0.1.5
    └── block-buffer v0.7.3 (*)

bytes v0.4.12
├── postgres v0.15.2 (*)
└── postgres-protocol v0.3.2 (*)

bytes v0.5.4
├── h2 v0.2.5 (*)
├── http v0.2.1
│   ├── h2 v0.2.5 (*)
│   ├── http-body v0.3.1
│   │   ├── hyper v0.13.6 (*)
│   │   └── reqwest v0.10.6 (*)
│   ├── hyper v0.13.6 (*)
│   ├── reqwest v0.10.6 (*)
│   ├── rusoto_core v0.45.0 (*)
│   └── rusoto_signature v0.45.0 (*)
├── http-body v0.3.1 (*)
├── hyper v0.13.6 (*)
├── hyper-tls v0.4.1 (*)
├── reqwest v0.10.6 (*)
├── rusoto_core v0.45.0 (*)
├── rusoto_s3 v0.45.0 (*)
├── rusoto_signature v0.45.0 (*)
├── tokio v0.2.22
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   ├── h2 v0.2.5 (*)
│   ├── hyper v0.13.6 (*)
│   ├── hyper-tls v0.4.1 (*)
│   ├── reqwest v0.10.6 (*)
│   ├── rusoto_core v0.45.0 (*)
│   ├── rusoto_credential v0.45.0 (*)
│   ├── rusoto_signature v0.45.0 (*)
│   ├── rustwide v0.7.1 (*)
│   ├── tokio-tls v0.3.1 (*)
│   └── tokio-util v0.3.1
│       └── h2 v0.2.5 (*)
└── tokio-util v0.3.1 (*)

crypto-mac v0.5.2
└── hmac v0.5.0
    └── postgres-protocol v0.3.2 (*)

crypto-mac v0.8.0
└── hmac v0.8.1
    └── rusoto_signature v0.45.0 (*)

digest v0.7.6
├── hmac v0.5.0 (*)
└── sha2 v0.7.1 (*)

digest v0.8.1
└── sha-1 v0.8.2 (*)

digest v0.9.0
├── hmac v0.8.1 (*)
└── sha2 v0.9.1 (*)

filetime v0.1.15
└── staticfile v0.4.0 (*)

filetime v0.2.10
├── notify v4.0.15
│   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
└── tar v0.4.26
    └── rustwide v0.7.1 (*)

generic-array v0.9.0
├── crypto-mac v0.5.2 (*)
├── digest v0.7.6 (*)
└── postgres-protocol v0.3.2 (*)

generic-array v0.12.3
├── block-buffer v0.7.3 (*)
└── digest v0.8.1 (*)

generic-array v0.14.3
├── block-buffer v0.9.0 (*)
├── crypto-mac v0.8.0 (*)
└── digest v0.9.0 (*)

hex v0.2.0
└── postgres-shared v0.4.2 (*)

hex v0.4.2
├── procfs v0.7.9 (*)
└── rusoto_signature v0.45.0 (*)

hmac v0.5.0 (*)

hmac v0.8.1 (*)

hyper v0.10.16 (*)

hyper v0.13.6 (*)

idna v0.1.5
└── url v1.7.2
    ├── hyper v0.10.16 (*)
    ├── iron v0.5.1 (*)
    ├── router v0.5.1 (*)
    ├── staticfile v0.4.0 (*)
    └── urlencoded v0.6.0 (*)

idna v0.2.0
└── url v2.1.1
    ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
    ├── git2 v0.13.6 (*)
    ├── reqwest v0.10.6 (*)
    └── serde_urlencoded v0.6.1
        └── reqwest v0.10.6 (*)

lazy_static v0.2.11
└── iron v0.5.1 (*)

lazy_static v1.4.0
├── bstr v0.2.13
│   ├── csv v1.1.3
│   │   └── criterion v0.3.3 (*)
│   └── globset v0.4.5
│       └── ignore v0.4.16 (*)
├── comrak v0.3.1
│   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── criterion v0.3.3 (*)
├── crossbeam-epoch v0.8.2 (*)
├── crossbeam-utils v0.7.2 (*)
├── ignore v0.4.16 (*)
├── openssl v0.10.29 (*)
├── procfs v0.7.9 (*)
├── prometheus v0.7.0
│   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── rayon-core v1.7.0 (*)
├── reqwest v0.10.6 (*)
├── rusoto_core v0.45.0 (*)
├── rustwide v0.7.1 (*)
├── string_cache v0.8.0
│   └── markup5ever v0.10.0
│       └── html5ever v0.25.1
│           └── kuchiki v0.8.0
│               └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── structopt v0.3.14
│   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── systemstat v0.1.5 (*)
├── tera v1.3.1 (*)
├── thread_local v1.0.1
│   ├── ignore v0.4.16 (*)
│   └── regex v1.3.7
│       ├── comrak v0.3.1 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       ├── criterion v0.3.3 (*)
│       ├── env_logger v0.7.1
│       │   └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       ├── globset v0.4.5 (*)
│       ├── ignore v0.4.16 (*)
│       ├── parse-zoneinfo v0.2.1
│       │   [build-dependencies]
│       │   └── chrono-tz v0.5.1 (*)
│       ├── rusoto_credential v0.45.0 (*)
│       └── tera v1.3.1 (*)
└── tokio v0.2.22 (*)

log v0.3.9
├── hyper v0.10.16 (*)
├── iron v0.5.1 (*)
├── mime v0.2.6
│   ├── hyper v0.10.16 (*)
│   ├── mime_guess v1.8.8 (*)
│   └── multipart v0.13.6 (*)
└── multipart v0.13.6 (*)

log v0.4.8
├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── env_logger v0.7.1 (*)
├── git2 v0.13.6 (*)
├── globset v0.4.5 (*)
├── h2 v0.2.5 (*)
├── html5ever v0.25.1 (*)
├── hyper v0.13.6 (*)
├── ignore v0.4.16 (*)
├── log v0.3.9 (*)
├── markup5ever v0.10.0 (*)
├── mio v0.6.22
│   ├── mio-extras v2.0.6
│   │   └── notify v4.0.15 (*)
│   ├── mio-uds v0.6.8
│   │   └── tokio v0.2.22 (*)
│   ├── notify v4.0.15 (*)
│   └── tokio v0.2.22 (*)
├── mio-extras v2.0.6 (*)
├── native-tls v0.2.4 (*)
├── postgres v0.15.2 (*)
├── r2d2 v0.8.8
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   └── r2d2_postgres v0.14.0 (*)
├── reqwest v0.10.6 (*)
├── rusoto_core v0.45.0 (*)
├── rusoto_signature v0.45.0 (*)
├── rustwide v0.7.1 (*)
├── schemamama v0.3.0
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   └── schemamama_postgres v0.2.4 (*)
├── selectors v0.22.0
│   └── kuchiki v0.8.0 (*)
├── tokio-util v0.3.1 (*)
└── want v0.3.0
    └── hyper v0.13.6 (*)

md5 v0.3.8
└── postgres-protocol v0.3.2 (*)

md5 v0.7.0
├── rusoto_core v0.45.0 (*)
└── rusoto_signature v0.45.0 (*)

memchr v1.0.2
├── buf_redux v0.6.3
│   └── multipart v0.13.6 (*)
├── nom v3.2.1
│   └── systemstat v0.1.5 (*)
└── postgres-protocol v0.3.2 (*)

memchr v2.3.3
├── aho-corasick v0.7.10
│   ├── globset v0.4.5 (*)
│   └── regex v1.3.7 (*)
├── bstr v0.2.13 (*)
├── csv-core v0.1.10
│   └── csv v1.1.3 (*)
├── futures-util v0.3.5
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   ├── futures v0.3.5
│   │   ├── rusoto_core v0.45.0 (*)
│   │   ├── rusoto_credential v0.45.0 (*)
│   │   ├── rusoto_s3 v0.45.0 (*)
│   │   └── rusoto_signature v0.45.0 (*)
│   ├── futures-executor v0.3.5
│   │   └── futures v0.3.5 (*)
│   ├── h2 v0.2.5 (*)
│   ├── hyper v0.13.6 (*)
│   ├── reqwest v0.10.6 (*)
│   └── rustwide v0.7.1 (*)
├── ignore v0.4.16 (*)
├── regex v1.3.7 (*)
├── tokio v0.2.22 (*)
└── twoway v0.1.8
    ├── comrak v0.3.1 (*)
    └── multipart v0.13.6 (*)

mime v0.2.6 (*)

mime v0.3.16
├── mime_guess v2.0.3
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   └── reqwest v0.10.6 (*)
└── reqwest v0.10.6 (*)

mime_guess v1.8.8 (*)

mime_guess v2.0.3 (*)

opaque-debug v0.2.3
└── sha-1 v0.8.2 (*)

opaque-debug v0.3.0
└── sha2 v0.9.1 (*)

percent-encoding v1.0.1
└── url v1.7.2 (*)

percent-encoding v2.1.0
├── reqwest v0.10.6 (*)
├── rusoto_core v0.45.0 (*)
├── rusoto_signature v0.45.0 (*)
├── rustwide v0.7.1 (*)
├── tera v1.3.1 (*)
└── url v2.1.1 (*)

pest v1.0.6
├── comrak v0.3.1 (*)
└── pest_derive v1.0.8
    └── comrak v0.3.1 (*)

pest v2.1.3
├── pest_derive v2.1.0 (*)
├── pest_generator v2.1.3 (*)
├── pest_meta v2.1.3 (*)
└── tera v1.3.1 (*)

pest_derive v1.0.8 (*)

pest_derive v2.1.0 (*)

phf v0.7.24
├── mime_guess v1.8.8 (*)
└── postgres-shared v0.4.2 (*)
[build-dependencies]
└── mime_guess v1.8.8 (*)

phf v0.8.0
├── cssparser v0.27.2
│   ├── kuchiki v0.8.0 (*)
│   └── selectors v0.22.0 (*)
├── markup5ever v0.10.0 (*)
└── selectors v0.22.0 (*)

phf_codegen v0.7.24 (*)

phf_codegen v0.8.0
[build-dependencies]
├── markup5ever v0.10.0 (*)
└── selectors v0.22.0 (*)

phf_generator v0.7.24 (*)

phf_generator v0.8.0
├── phf_codegen v0.8.0 (*)
├── phf_macros v0.8.0
│   └── phf v0.8.0 (*)
└── string_cache_codegen v0.5.1
    [build-dependencies]
    └── markup5ever v0.10.0 (*)

phf_shared v0.7.24
├── phf v0.7.24 (*)
├── phf_codegen v0.7.24 (*)
└── phf_generator v0.7.24 (*)

phf_shared v0.8.0
├── phf v0.8.0 (*)
├── phf_codegen v0.8.0 (*)
├── phf_generator v0.8.0 (*)
├── phf_macros v0.8.0 (*)
├── string_cache v0.8.0 (*)
└── string_cache_codegen v0.5.1 (*)

quote v0.3.15
├── pest_derive v1.0.8 (*)
└── syn v0.11.11
    └── pest_derive v1.0.8 (*)

quote v1.0.6
├── async-trait v0.1.36
│   ├── rusoto_core v0.45.0 (*)
│   ├── rusoto_credential v0.45.0 (*)
│   └── rusoto_s3 v0.45.0 (*)
├── cssparser-macros v0.6.0
│   └── cssparser v0.27.2 (*)
├── derive_more v0.99.7
│   └── selectors v0.22.0 (*)
├── failure_derive v0.1.8
│   └── failure v0.1.8
│       ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       └── rustwide v0.7.1 (*)
├── futures-macro v0.3.5
│   └── futures-util v0.3.5 (*)
├── pest_generator v2.1.3 (*)
├── phf_macros v0.8.0 (*)
├── pin-project-internal v0.4.17
│   └── pin-project v0.4.17
│       ├── futures-util v0.3.5 (*)
│       ├── hyper v0.13.6 (*)
│       ├── rusoto_core v0.45.0 (*)
│       ├── rusoto_credential v0.45.0 (*)
│       └── rusoto_signature v0.45.0 (*)
├── proc-macro-error v1.0.2
│   └── structopt-derive v0.4.7
│       └── structopt v0.3.14 (*)
├── proc-macro-error-attr v1.0.2
│   └── proc-macro-error v1.0.2 (*)
├── serde_derive v1.0.110
│   ├── crates-index-diff v7.0.1 (*)
│   ├── criterion v0.3.3 (*)
│   └── serde v1.0.110
│       ├── bodyparser v0.8.0 (*)
│       ├── bstr v0.2.13 (*)
│       ├── chrono v0.4.11 (*)
│       ├── crates-index-diff v7.0.1 (*)
│       ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       ├── criterion v0.3.3 (*)
│       ├── csv v1.1.3 (*)
│       ├── reqwest v0.10.6 (*)
│       ├── rusoto_core v0.45.0 (*)
│       ├── rusoto_credential v0.45.0 (*)
│       ├── rusoto_signature v0.45.0 (*)
│       ├── rustwide v0.7.1 (*)
│       ├── semver v0.9.0
│       │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       │   └── rustc_version v0.2.3
│       │       [build-dependencies]
│       │       ├── cast v0.2.3
│       │       │   ├── criterion v0.3.3 (*)
│       │       │   └── criterion-plot v0.4.3
│       │       │       └── criterion v0.3.3 (*)
│       │       ├── rusoto_core v0.45.0 (*)
│       │       └── rusoto_signature v0.45.0 (*)
│       ├── serde_cbor v0.11.1
│       │   └── criterion v0.3.3 (*)
│       ├── serde_json v1.0.53
│       │   ├── bodyparser v0.8.0 (*)
│       │   ├── crates-index-diff v7.0.1 (*)
│       │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       │   ├── criterion v0.3.3 (*)
│       │   ├── params v0.8.0 (*)
│       │   ├── postgres-shared v0.4.2 (*)
│       │   ├── reqwest v0.10.6 (*)
│       │   ├── rusoto_core v0.45.0 (*)
│       │   ├── rusoto_credential v0.45.0 (*)
│       │   ├── rustwide v0.7.1 (*)
│       │   ├── tera v1.3.1 (*)
│       │   └── tinytemplate v1.1.0
│       │       └── criterion v0.3.3 (*)
│       │   [build-dependencies]
│       │   └── markup5ever v0.10.0 (*)
│       ├── serde_urlencoded v0.6.1 (*)
│       ├── string_cache v0.8.0 (*)
│       ├── tera v1.3.1 (*)
│       ├── tinytemplate v1.1.0 (*)
│       ├── toml v0.5.6
│       │   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│       │   └── rustwide v0.7.1 (*)
│       └── url v2.1.1 (*)
│       [build-dependencies]
│       └── markup5ever v0.10.0 (*)
│   [build-dependencies]
│   └── markup5ever v0.10.0 (*)
├── string_cache_codegen v0.5.1 (*)
├── structopt-derive v0.4.7 (*)
├── strum_macros v0.18.0
│   └── strum v0.18.0
│       └── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── syn v1.0.22
│   ├── async-trait v0.1.36 (*)
│   ├── cssparser-macros v0.6.0 (*)
│   ├── derive_more v0.99.7 (*)
│   ├── failure_derive v0.1.8 (*)
│   ├── futures-macro v0.3.5 (*)
│   ├── pest_generator v2.1.3 (*)
│   ├── phf_macros v0.8.0 (*)
│   ├── pin-project-internal v0.4.17 (*)
│   ├── proc-macro-error v1.0.2 (*)
│   ├── proc-macro-error-attr v1.0.2 (*)
│   ├── serde_derive v1.0.110 (*)
│   ├── structopt-derive v0.4.7 (*)
│   ├── strum_macros v0.18.0 (*)
│   ├── syn-mid v0.5.0
│   │   └── proc-macro-error-attr v1.0.2 (*)
│   ├── synstructure v0.12.3
│   │   └── failure_derive v0.1.8 (*)
│   ├── time-macros-impl v0.1.1
│   │   └── time-macros v0.1.0
│   │       └── time v0.2.16
│   │           └── rusoto_signature v0.45.0 (*)
│   └── tokio-macros v0.2.5
│       └── tokio v0.2.22 (*)
│   [build-dependencies]
│   ├── cssparser v0.27.2 (*)
│   └── html5ever v0.25.1 (*)
├── syn-mid v0.5.0 (*)
├── synstructure v0.12.3 (*)
├── time-macros-impl v0.1.1 (*)
└── tokio-macros v0.2.5 (*)
[build-dependencies]
├── cssparser v0.27.2 (*)
└── html5ever v0.25.1 (*)

rand v0.3.23
├── multipart v0.13.6 (*)
└── postgres-protocol v0.3.2 (*)

rand v0.4.6
├── num-bigint v0.1.44 (*)
├── rand v0.3.23 (*)
└── tempdir v0.3.7
    ├── multipart v0.13.6 (*)
    └── params v0.8.0 (*)

rand v0.6.5 (*)

rand v0.7.3
├── phf_generator v0.8.0 (*)
├── tempfile v3.1.0
│   ├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
│   └── rustwide v0.7.1 (*)
└── tera v1.3.1 (*)
[dev-dependencies]
└── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)

rand_chacha v0.1.1 (*)

rand_chacha v0.2.2
└── rand v0.7.3 (*)

rand_core v0.3.1
├── rand_chacha v0.1.1 (*)
├── rand_hc v0.1.0
│   └── rand v0.6.5 (*)
├── rand_isaac v0.1.1
│   └── rand v0.6.5 (*)
└── rand_xorshift v0.1.1
    └── rand v0.6.5 (*)

rand_core v0.4.2
├── rand v0.6.5 (*)
├── rand_core v0.3.1 (*)
├── rand_jitter v0.1.4
│   └── rand v0.6.5 (*)
├── rand_os v0.1.3
│   └── rand v0.6.5 (*)
└── rand_pcg v0.1.2 (*)

rand_core v0.5.1
├── rand v0.7.3 (*)
├── rand_chacha v0.2.2 (*)
└── rand_pcg v0.2.1
    └── rand v0.7.3 (*)

rand_pcg v0.1.2 (*)

rand_pcg v0.2.1 (*)

safemem v0.2.0
├── base64 v0.6.0 (*)
├── buf_redux v0.6.3 (*)
└── multipart v0.13.6 (*)

safemem v0.3.3
└── base64 v0.9.3 (*)

sha2 v0.7.1 (*)

sha2 v0.9.1 (*)

siphasher v0.2.3
└── phf_shared v0.7.24 (*)

siphasher v0.3.3
└── phf_shared v0.8.0 (*)

syn v0.11.11 (*)

syn v1.0.22 (*)

time v0.1.43
├── chrono v0.4.11 (*)
├── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)
├── hyper v0.10.16 (*)
├── hyper v0.13.6 (*)
├── staticfile v0.4.0 (*)
└── systemstat v0.1.5 (*)
[build-dependencies]
└── cratesfyi v0.6.0 (/home/joshua/src/rust/docs.rs)

time v0.2.16 (*)

unicase v1.4.2
├── hyper v0.10.16 (*)
├── mime_guess v1.8.8 (*)
└── phf_shared v0.7.24 (*)
[build-dependencies]
└── mime_guess v1.8.8 (*)

unicase v2.6.0
└── mime_guess v2.0.3 (*)
[build-dependencies]
└── mime_guess v2.0.3 (*)

unicode-xid v0.0.4
├── syn v0.11.11 (*)
└── synom v0.11.3
    └── syn v0.11.11 (*)

unicode-xid v0.2.0
├── proc-macro2 v1.0.13
│   ├── async-trait v0.1.36 (*)
│   ├── derive_more v0.99.7 (*)
│   ├── failure_derive v0.1.8 (*)
│   ├── futures-macro v0.3.5 (*)
│   ├── pest_generator v2.1.3 (*)
│   ├── phf_macros v0.8.0 (*)
│   ├── pin-project-internal v0.4.17 (*)
│   ├── proc-macro-error v1.0.2 (*)
│   ├── proc-macro-error-attr v1.0.2 (*)
│   ├── quote v1.0.6 (*)
│   ├── serde_derive v1.0.110 (*)
│   ├── string_cache_codegen v0.5.1 (*)
│   ├── structopt-derive v0.4.7 (*)
│   ├── strum_macros v0.18.0 (*)
│   ├── syn v1.0.22 (*)
│   ├── syn-mid v0.5.0 (*)
│   ├── synstructure v0.12.3 (*)
│   ├── time-macros-impl v0.1.1 (*)
│   └── tokio-macros v0.2.5 (*)
│   [build-dependencies]
│   ├── cssparser v0.27.2 (*)
│   └── html5ever v0.25.1 (*)
├── syn v1.0.22 (*)
└── synstructure v0.12.3 (*)

url v1.7.2 (*)

url v2.1.1 (*)

version_check v0.1.5
[build-dependencies]
└── unicase v1.4.2 (*)

version_check v0.9.1
[build-dependencies]
├── generic-array v0.14.3 (*)
├── proc-macro-error v1.0.2 (*)
├── proc-macro-error-attr v1.0.2 (*)
├── time v0.2.16 (*)
└── unicase v2.6.0 (*)

There are 90 in total, so 45 crates we can remove altogether.

Various other issues. Will deal with them more once tokio 0.2 lands.

@jyn514 jyn514 added the A-newcomer-roadblock Area: A problem that isn't a bug, but makes it harder for people to contribute label Jul 26, 2020
@jyn514
Copy link
Member Author

jyn514 commented Oct 22, 2020

Most of the remaining duplicates come from lol_html, which depends on old versions of selectors and cssparser, or iron 0.5.1, which we can't do much about.

@jyn514
Copy link
Member Author

jyn514 commented Oct 22, 2020

Update: updating iron doesn't help, even 0.6 depends on an old version of hyper. We'd have to fork it entirely, which I'd rather not do.

@syphar
Copy link
Member

syphar commented Jan 15, 2023

looking through old issues I stumbled onto this one.

Is this something we still should invest time on?

@syphar syphar closed this as completed Aug 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-newcomer-roadblock Area: A problem that isn't a bug, but makes it harder for people to contribute E-hard Effort: This will require a lot of work P-medium Medium priority
Projects
None yet
Development

No branches or pull requests

4 participants