servo/webrender
View on GitHubRe-export app_units::Au or disable serde for app_units
Open
#3,045 opened on Sep 11, 2018
area: infrastructuredifficulty: easyhelp wantedtype: enhancement
Repository metrics
- Stars
- (3,355 stars)
- PR merge metrics
- (PR metrics pending)
Description
In order to create a AddFontInstance struct, you have to use an app_units::Au. This is very annoying because:
app_unitsdepends on serde and num_traits, both very compile-time heavy crates that are completely unused, yet they still need to be compiled in- This is the only place in the entire public webrender API where
Auis used app_unitsisn't re-exported, so other crates have to add the exact version that webrender uses to their Cargo.toml manually.
So my proposal is to create a function that creates an Au from an i32 value, this way you don't have to re-export the Au, i.e.:
pub fn webrender_create_au_from_px(value: i32) -> Option<Au> {
let value = value * AU_PER_PX;
if value < MIN_AU || value > MAX_AU {
None
} else {
Some(Au(value))
}
}
And please make serde and num-traits in the app-units crate optional - for a regular webrender application, these crates go completely unused because serde serialization is only used for the debugger, but these crates still have to be compiled, leading to bad compile times.