Skip to content

Conversation

@Code0x58
Copy link

@Code0x58 Code0x58 commented Sep 4, 2024

#3422: add explicit rustfmt::sort attribute which causes case sensitive sorting

  • enum variants
  • struct structs

This does not raise if rustfmt::sort is applied in an unhandled place (e.g. struct, member, etc.), although that might be reasonable to pursue; at a glance, rustfmt::skip does not appear to do that, which may be more reasonable given how it can reasonably apply to anything.

TODO:

  • implement #[rustfmt::skip::sort]
@Code0x58 Code0x58 changed the title Add #[rustfmt::sort] for enum variants WIP: Add #[rustfmt::sort] for enum variants Sep 4, 2024
@Code0x58 Code0x58 force-pushed the issue/3422 branch 3 times, most recently from 7130bf7 to 9cd28ab Compare September 4, 2024 22:43
@Code0x58 Code0x58 changed the title WIP: Add #[rustfmt::sort] for enum variants Add #[rustfmt::sort] and implement for enum variants and struct structs Sep 4, 2024
@Code0x58
Copy link
Author

Code0x58 commented Sep 5, 2024

I've found this useful as is, for formatting a large enumeration with attributes on the members. One issue I've bumped into was that this enumeration in particular uses Serde's untagged feature e.g.

use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize, PartialEq)] pub enum StringyThingy { Zoo, #[serde(untagged)] Other(String) }

where Other must be at the end. That makes me think that it would be best to try working out some way of maintaining this. The most practical solution I can think of right now is to have some a way to stop the index from being changed, e.g. rustfmt::skip::sort

pub enum StringyThingy { Zoo, #[rustfmt::skip::sort] #[serde(untagged)] Other(String) }
@Code0x58 Code0x58 changed the title Add #[rustfmt::sort] and implement for enum variants and struct structs Draft: Add #[rustfmt::sort] and implement for enum variants and struct structs Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants