diff options
| author | Cameron Steffen <cam.steffen94@gmail.com> | 2021-08-05 12:02:41 -0500 |
|---|---|---|
| committer | Cameron Steffen <cam.steffen94@gmail.com> | 2021-08-16 16:28:16 +0000 |
| commit | f4ef07c2a9adf6df5717c6d664fad0b8fea7a1bd (patch) | |
| tree | c21e61a3c9253dfca73eaea68429fe7fbdf3940d | |
| parent | 975bc18481879b69603674266a5239ecb579f928 (diff) | |
| download | rust-f4ef07c2a9adf6df5717c6d664fad0b8fea7a1bd.tar.gz rust-f4ef07c2a9adf6df5717c6d664fad0b8fea7a1bd.zip | |
Get piece unchecked in write
| -rw-r--r-- | library/core/src/fmt/mod.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/library/core/src/fmt/mod.rs b/library/core/src/fmt/mod.rs index b32b1f86336..1d75ac3d254 100644 --- a/library/core/src/fmt/mod.rs +++ b/library/core/src/fmt/mod.rs @@ -4,7 +4,6 @@ use crate::cell::{Cell, Ref, RefCell, RefMut, UnsafeCell}; use crate::char::EscapeDebugExtArgs; -use crate::iter; use crate::marker::PhantomData; use crate::mem; use crate::num::fmt as numfmt; @@ -1141,7 +1140,10 @@ pub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result { match args.fmt { None => { // We can use default formatting parameters for all arguments. - for (arg, piece) in iter::zip(args.args, args.pieces) { + for (i, arg) in args.args.iter().enumerate() { + // SAFETY: args.args and args.pieces come from the same Arguments, + // which guarantees the indexes are always within bounds. + let piece = unsafe { args.pieces.get_unchecked(i) }; if !piece.is_empty() { formatter.buf.write_str(*piece)?; } @@ -1152,7 +1154,10 @@ pub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result { Some(fmt) => { // Every spec has a corresponding argument that is preceded by // a string piece. - for (arg, piece) in iter::zip(fmt, args.pieces) { + for (i, arg) in fmt.iter().enumerate() { + // SAFETY: fmt and args.pieces come from the same Arguments, + // which guarantees the indexes are always within bounds. + let piece = unsafe { args.pieces.get_unchecked(i) }; if !piece.is_empty() { formatter.buf.write_str(*piece)?; } |
