awslabs / mls-rs

An implementation of Messaging Layer Security (RFC 9420)
Apache License 2.0
105 stars 19 forks source link

Format with `imports_granularity = "Module"` #186

Open mgeisler opened 3 months ago

mgeisler commented 3 months ago

Description of changes:

This is the result of running cargo +nightly fmt with the unstable rustfmt option imports_granularity = "Module".

Personally, I find this style much easier to use:

Call-outs:

This option is unstable, meaning that it has no effect on a stable rustfmt. Luckily, the default value for imports_granularity is Preserve, which means that the formatting done here will be preserved by future cargo fmt calls:

https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#imports_granularity

This applies to both on the stable and nightly channels.

This is a personal preference, so this PR is just there to demonstrate the delta in case it hadn't been considered. Somewhat unintuitively, this style is more compact: the diffstat says 971 insertions(+), 1187 deletions(-), meaning that the imports take up 18% less vertical space now.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT license.

mgeisler commented 3 months ago

Cool, thanks!

For sure this makes the style consistent, which is already a big improvement.

Cool, I'm glad you like it! I'll fix the fuzz target imports too now.

mgeisler commented 3 months ago

I think we're getting closer — the fuzz targets are also formatted now. I thought they would get formatted by a cargo fmt --all, but I was wrong :sweat_smile:

stefunctional commented 3 months ago

This formatting style deviates from rust-analyzer's default, but that's probably a moot point as rust-analyzer seems to recognize the style and adapts automatic imports accordingly.

This style is inconsistent for conditional imports. This PR contains several blocks looking like this:

#[cfg(feature = "by_ref_proposal")]
use crate::{
    group::{
        framing::{Content, MlsMessagePayload},
        message_processor::CachedProposal,
        message_signature::AuthenticatedContent,
        proposal::Proposal,
        proposal_ref::ProposalRef,
        Sender,
    },
    WireFormat,
};