Applying #[rustfmt::skip] to an item will keep rustfmt from touching it, though if you want to limit the skipping to just a few lines rather than something like an entire function, you'll need to satisfy the requirements for what attributes can be applied to.
A narrower-scoped but less self-explanatory tool is to add a line comment to each line:
let s = [
1, 2, 3, //
4, 5, 6, //
7, 8, 9, //
];
Each comment is a place where rustfmt won't remove the line break. This preserves your matrix formatting, but still allows rustfmt to manage indentation and spacing, whereas #[rustfmt::skip] will cause it to not even change indentation.