Crates.io | pavexc_rustdoc_types |
lib.rs | pavexc_rustdoc_types |
version | 0.1.53 |
source | src |
created_at | 2024-11-09 17:19:29.853938 |
updated_at | 2024-11-09 17:46:19.420073 |
description | The slimmed down schema used by pavexc to work with rustdoc's JSON output |
homepage | |
repository | https://github.com/LukeMathWalker/pavex |
max_upload_size | |
id | 1442236 |
size | 48,398 |
pavexc_rustdoc_types
It's a fork of rustdoc_types
with a specific purpose: maximise performance
when working with JSON docs in pavexc
.
In particular, we want to minimise the size of the JSON files stored in pavexc
SQLite database as well as the time it
takes to parse the JSON files returned by rustdoc
.
The changes are rather minimal: we comment out some fields that are not used in pavexc
but account for a significant
portion of the JSON file size. They are all marked out with a // EXCLUDED!
comment.
We rely on this script:
total_size=$(wc -c < file.json); docs_size=$(jq '.. | .field_name1? // .field_name2? // empty' file.json | wc -c); echo "scale=2; $docs
_size*100/$total_size" | bc
to measure the impact of removing field_name1
and field_name2
from the JSON file. The script calculates the percentage
of the JSON file size that is taken up by field_name1
and field_name2
.
We strive to remove fields that account for a non-negligible portion of the JSON file size, to minimise the overhead of syncing the fork with the upstream repository.