digraph {
    subgraph cluster_web {
        label="actix/web"

        "awc"
        "web"
        "files"
        "http"
        "multipart"
        "web-actors"
        "web-codegen"
        "http-test"

        { rank=same; "multipart" "web-actors" "http-test" };
        { rank=same; "files" "awc" "web" };
        { rank=same; "web-codegen" "http" };
    }

    "web" -> { "codec" "service" "utils" "router" "rt" "server" "macros" "web-codegen" "http" "awc" }
    "web" -> { "tls" }[color=blue] // optional
    "awc" -> { "codec" "service" "http" "rt" }
    "web-actors" -> { "actix" "web" "http" "codec" }
    "multipart" -> { "web" "service" "utils" }
    "http" -> { "service" "codec" "utils" "rt" }
    "http" -> { "tls" }[color=blue] // optional
    "files" -> { "web" }
    "http-test" -> { "service" "codec" "utils" "rt" "server" "awc" }
    "http-test" -> { "tls" }[color=blue] // optional

    // net

    "utils" -> { "service" "rt" "codec" }
    "tracing" -> { "service" }
    "tls" -> { "service" "codec" "utils" }
    "server" -> { "service" "rt" "codec" "utils" }
    "rt" -> { "macros" }

    { rank=same; "utils" "codec" };
    { rank=same; "rt" "macros" "service" "router" };

    // actix

    "actix" -> { "rt" }
}