Closed
Description
With the following config, having just enabled the struct_field_align_threshold = 20
line, and running cargo +nightly fmt
, rustfmt removed the terminating commas from some structs like the following, breaking them.
brace_style = "SameLineWhere"
comment_width = 100
edition = "2018"
fn_args_layout = "Compressed"
hard_tabs = false
match_block_trailing_comma = true
max_width = 100
merge_derives = false
newline_style = "Unix"
normalize_doc_attributes = true
overflow_delimited_expr = true
reorder_imports = false
reorder_modules = true
struct_field_align_threshold = 20
tab_spaces = 4
trailing_comma = "Never"
use_small_heuristics = "Max"
use_try_shorthand = true
wrap_comments = true
/// Playback and record buffer metrics.
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct BufferAttr {
/* NOTE: This struct must be directly usable by the C API, thus same attributes/layout/etc */
/// Maximum length of the buffer in bytes.
///
/// Setting this to [`std::u32::MAX`] will initialize this to the maximum value supported by
/// the server, which is recommended. In strict low-latency playback scenarios you might
/// want to set this to a lower value, likely together with the
/// [`stream::FlagSet::ADJUST_LATENCY`] flag. If you do so, you ensure that the latency
/// doesn’t grow beyond what is acceptable for the use case, at the cost of getting more
/// underruns if the latency is lower than what the server can reliably handle.
///
/// [`stream::FlagSet::ADJUST_LATENCY`]: crate::stream::FlagSet::ADJUST_LATENCY
pub maxlength: u32
/// Target length of the buffer (playback only). The server tries to assure that at least
/// `tlength` bytes are always available in the per-stream server-side playback buffer. The
/// server will only send requests for more data as long as the buffer has less than this
/// number of bytes of data.
///
/// It is recommended to set this to [`std::u32::MAX`], which will initialize this to a value
/// that is deemed sensible by the server. However, this value will default to something like
/// 2s; for applications that have specific latency requirements this value should be set to
/// the maximum latency that the application can deal with.
///
/// When [`stream::FlagSet::ADJUST_LATENCY`] is not set this value will influence only the
/// per-stream playback buffer size. When [`stream::FlagSet::ADJUST_LATENCY`] is set, the
/// overall latency of the sink plus the playback buffer size is configured to this value. Set
/// [`stream::FlagSet::ADJUST_LATENCY`] if you are interested in adjusting the overall latency.
/// Don’t set it if you are interested in configuring the server-side per-stream playback
/// buffer size.
///
/// [`stream::FlagSet::ADJUST_LATENCY`]: crate::stream::FlagSet::ADJUST_LATENCY
pub tlength: u32
/// Pre-buffering (playback only). The server does not start with playback before at least
/// `prebuf` bytes are available in the buffer. It is recommended to set this to
/// [`std::u32::MAX`], which will initialize this to the same value as `tlength`, whatever that
/// may be.
///
/// Initialize to `0` to enable manual start/stop control of the stream. This means that
/// playback will not stop on underrun and playback will not start automatically, instead
/// [`Stream::cork()`] needs to be called explicitly. If you set this value to `0` you should
/// also set [`stream::FlagSet::START_CORKED`]. Should underrun occur, the read index of the
/// output buffer overtakes the write index, and hence the fill level of the buffer is
/// negative.
///
/// Start of playback can be forced using [`Stream::trigger()`] even though the prebuffer size
/// hasn’t been reached. If a buffer underrun occurs, this prebuffering will be again enabled.
///
/// [`Stream::cork()`]: crate::stream::Stream::cork
/// [`Stream::trigger()`]: crate::stream::Stream::trigger
/// [`stream::FlagSet::START_CORKED`]: crate::stream::FlagSet::START_CORKED
pub prebuf: u32
/// Minimum request (playback only). The server does not request less than `minreq` bytes from
/// the client, instead it waits until the buffer is free enough to request more bytes at once.
///
/// It is recommended to set this to [`std::u32::MAX`], which will initialize this to a value
/// that is deemed sensible by the server. This should be set to a value that gives PulseAudio
/// enough time to move the data from the per-stream playback buffer into the hardware playback
/// buffer.
pub minreq: u32
/// Fragment size (recording only). The server sends data in blocks of `fragsize` bytes size.
///
/// Large values diminish interactivity with other operations on the connection context but
/// decrease control overhead. It is recommended to set this to `std::u32::MAX`, which will
/// initialize this to a value that is deemed sensible by the server. However, this value will
/// default to something like 2s; For applications that have specific latency requirements this
/// value should be set to the maximum latency that the application can deal with.
///
/// If [`stream::FlagSet::ADJUST_LATENCY`] is set the overall source latency will be adjusted
/// according to this value. If it is not set the source latency is left unmodified.
///
/// [`stream::FlagSet::ADJUST_LATENCY`]: crate::stream::FlagSet::ADJUST_LATENCY
pub fragsize: u32
}
Trying to compile or re-run rustfmt afterwards obviously causes compile errors.