Merge tag 'rust-rustfmt' of git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux

Pull rustfmt fixes from Miguel Ojeda:
"Rust 'rustfmt' cleanup

'rustfmt', by default, formats imports in a way that is prone to
conflicts while merging and rebasing, since in some cases it condenses
several items into the same line.

Document in our guidelines that we will handle this for the moment
with the trailing empty comment workaround and make the tree
'rustfmt'-clean again"

* tag 'rust-rustfmt' of git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux:
rust: bitmap: fix formatting
rust: cpufreq: fix formatting
rust: alloc: employ a trailing comment to keep vertical layout
docs: rust: add section on imports formatting

+83 -5
+75
Documentation/rust/coding-guidelines.rst
··· 38 38 individual files, and does not require a kernel configuration. Sometimes it may 39 39 even work with broken code. 40 40 41 + Imports 42 + ~~~~~~~ 43 + 44 + ``rustfmt``, by default, formats imports in a way that is prone to conflicts 45 + while merging and rebasing, since in some cases it condenses several items into 46 + the same line. For instance: 47 + 48 + .. code-block:: rust 49 + 50 + // Do not use this style. 51 + use crate::{ 52 + example1, 53 + example2::{example3, example4, example5}, 54 + example6, example7, 55 + example8::example9, 56 + }; 57 + 58 + Instead, the kernel uses a vertical layout that looks like this: 59 + 60 + .. code-block:: rust 61 + 62 + use crate::{ 63 + example1, 64 + example2::{ 65 + example3, 66 + example4, 67 + example5, // 68 + }, 69 + example6, 70 + example7, 71 + example8::example9, // 72 + }; 73 + 74 + That is, each item goes into its own line, and braces are used as soon as there 75 + is more than one item in a list. 76 + 77 + The trailing empty comment allows to preserve this formatting. Not only that, 78 + ``rustfmt`` will actually reformat imports vertically when the empty comment is 79 + added. That is, it is possible to easily reformat the original example into the 80 + expected style by running ``rustfmt`` on an input like: 81 + 82 + .. code-block:: rust 83 + 84 + // Do not use this style. 85 + use crate::{ 86 + example1, 87 + example2::{example3, example4, example5, // 88 + }, 89 + example6, example7, 90 + example8::example9, // 91 + }; 92 + 93 + The trailing empty comment works for nested imports, as shown above, as well as 94 + for single item imports -- this can be useful to minimize diffs within patch 95 + series: 96 + 97 + .. code-block:: rust 98 + 99 + use crate::{ 100 + example1, // 101 + }; 102 + 103 + The trailing empty comment works in any of the lines within the braces, but it 104 + is preferred to keep it in the last item, since it is reminiscent of the 105 + trailing comma in other formatters. Sometimes it may be simpler to avoid moving 106 + the comment several times within a patch series due to changes in the list. 107 + 108 + There may be cases where exceptions may need to be made, i.e. none of this is 109 + a hard rule. There is also code that is not migrated to this style yet, but 110 + please do not introduce code in other styles. 111 + 112 + Eventually, the goal is to get ``rustfmt`` to support this formatting style (or 113 + a similar one) automatically in a stable release without requiring the trailing 114 + empty comment. Thus, at some point, the goal is to remove those comments. 115 + 41 116 42 117 Comments 43 118 --------
+1 -1
rust/kernel/alloc/kvec.rs
··· 9 9 }; 10 10 use crate::{ 11 11 fmt, 12 - page::AsPageIter, 12 + page::AsPageIter, // 13 13 }; 14 14 use core::{ 15 15 borrow::{Borrow, BorrowMut},
+6 -2
rust/kernel/bitmap.rs
··· 167 167 let ptr = if self.nbits <= BITS_PER_LONG { 168 168 // SAFETY: Bitmap is represented inline. 169 169 #[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")] 170 - unsafe { core::ptr::addr_of!(self.repr.bitmap) } 170 + unsafe { 171 + core::ptr::addr_of!(self.repr.bitmap) 172 + } 171 173 } else { 172 174 // SAFETY: Bitmap is represented as array of `unsigned long`. 173 175 unsafe { self.repr.ptr.as_ptr() } ··· 186 184 let ptr = if self.nbits <= BITS_PER_LONG { 187 185 // SAFETY: Bitmap is represented inline. 188 186 #[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")] 189 - unsafe { core::ptr::addr_of_mut!(self.repr.bitmap) } 187 + unsafe { 188 + core::ptr::addr_of_mut!(self.repr.bitmap) 189 + } 190 190 } else { 191 191 // SAFETY: Bitmap is represented as array of `unsigned long`. 192 192 unsafe { self.repr.ptr.as_ptr() }
+1 -2
rust/kernel/cpufreq.rs
··· 38 38 const CPUFREQ_NAME_LEN: usize = bindings::CPUFREQ_NAME_LEN as usize; 39 39 40 40 /// Default transition latency value in nanoseconds. 41 - pub const DEFAULT_TRANSITION_LATENCY_NS: u32 = 42 - bindings::CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS; 41 + pub const DEFAULT_TRANSITION_LATENCY_NS: u32 = bindings::CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS; 43 42 44 43 /// CPU frequency driver flags. 45 44 pub mod flags {