diff options
| author | bors <bors@rust-lang.org> | 2022-12-09 21:27:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-12-09 21:27:35 +0000 |
| commit | 0d5573e6daf99a5b98ace3dfcc4be2eb64867169 (patch) | |
| tree | 4b028ce3145de6b24167567d430a3c770853b1bc /compiler/rustc_parse_format/src/lib.rs | |
| parent | dfe3fe710181738a2cb3060c23ec5efb3c68ca09 (diff) | |
| parent | c44c82de2b174d0ca6184d15602ffc33fdbd8ae6 (diff) | |
| download | rust-0d5573e6daf99a5b98ace3dfcc4be2eb64867169.tar.gz rust-0d5573e6daf99a5b98ace3dfcc4be2eb64867169.zip | |
Auto merge of #105363 - WaffleLapkin:thin2win_box_next_argument, r=nnethercote
Shrink `rustc_parse_format::Piece` This makes both variants closer together in size (previously they were different by 208 bytes -- 16 vs 224). This may make things worse, but it's worth a try. r? `@nnethercote`
Diffstat (limited to 'compiler/rustc_parse_format/src/lib.rs')
| -rw-r--r-- | compiler/rustc_parse_format/src/lib.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_parse_format/src/lib.rs b/compiler/rustc_parse_format/src/lib.rs index 0113eb4e3d1..9cbe04c1288 100644 --- a/compiler/rustc_parse_format/src/lib.rs +++ b/compiler/rustc_parse_format/src/lib.rs @@ -58,13 +58,13 @@ impl InnerOffset { /// A piece is a portion of the format string which represents the next part /// to emit. These are emitted as a stream by the `Parser` class. -#[derive(Copy, Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Piece<'a> { /// A literal string which should directly be emitted String(&'a str), /// This describes that formatting should process the next argument (as /// specified inside) for emission. - NextArgument(Argument<'a>), + NextArgument(Box<Argument<'a>>), } /// Representation of an argument specification. @@ -244,7 +244,7 @@ impl<'a> Iterator for Parser<'a> { } else { self.suggest_positional_arg_instead_of_captured_arg(arg); } - Some(NextArgument(arg)) + Some(NextArgument(Box::new(arg))) } } '}' => { @@ -908,5 +908,9 @@ fn find_skips_from_snippet( (skips, true) } +// Assert a reasonable size for `Piece` +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +rustc_data_structures::static_assert_size!(Piece<'_>, 16); + #[cfg(test)] mod tests; |
