Skip to content

Commit 44c135b

Browse files
committed
use MaybeUninit in core::fmt
Code by @japaric, I just split it into individual commits
1 parent 1f57e48 commit 44c135b

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/libcore/fmt/float.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use fmt::{Formatter, Result, LowerExp, UpperExp, Display, Debug};
12-
use mem;
12+
use mem::MaybeUninit;
1313
use num::flt2dec;
1414

1515
// Don't inline this so callers don't use the stack space this function
@@ -20,11 +20,11 @@ fn float_to_decimal_common_exact<T>(fmt: &mut Formatter, num: &T,
2020
where T: flt2dec::DecodableFloat
2121
{
2222
unsafe {
23-
let mut buf: [u8; 1024] = mem::uninitialized(); // enough for f32 and f64
24-
let mut parts: [flt2dec::Part; 4] = mem::uninitialized();
23+
let mut buf = MaybeUninit::<[u8; 1024]>::uninitialized(); // enough for f32 and f64
24+
let mut parts = MaybeUninit::<[flt2dec::Part; 4]>::uninitialized();
2525
let formatted = flt2dec::to_exact_fixed_str(flt2dec::strategy::grisu::format_exact,
2626
*num, sign, precision,
27-
false, &mut buf, &mut parts);
27+
false, buf.get_mut(), parts.get_mut());
2828
fmt.pad_formatted_parts(&formatted)
2929
}
3030
}
@@ -38,10 +38,11 @@ fn float_to_decimal_common_shortest<T>(fmt: &mut Formatter, num: &T,
3838
{
3939
unsafe {
4040
// enough for f32 and f64
41-
let mut buf: [u8; flt2dec::MAX_SIG_DIGITS] = mem::uninitialized();
42-
let mut parts: [flt2dec::Part; 4] = mem::uninitialized();
41+
let mut buf = MaybeUninit::<[u8; flt2dec::MAX_SIG_DIGITS]>::uninitialized();
42+
let mut parts = MaybeUninit::<[flt2dec::Part; 4]>::uninitialized();
4343
let formatted = flt2dec::to_shortest_str(flt2dec::strategy::grisu::format_shortest, *num,
44-
sign, precision, false, &mut buf, &mut parts);
44+
sign, precision, false, buf.get_mut(),
45+
parts.get_mut());
4546
fmt.pad_formatted_parts(&formatted)
4647
}
4748
}
@@ -75,11 +76,11 @@ fn float_to_exponential_common_exact<T>(fmt: &mut Formatter, num: &T,
7576
where T: flt2dec::DecodableFloat
7677
{
7778
unsafe {
78-
let mut buf: [u8; 1024] = mem::uninitialized(); // enough for f32 and f64
79-
let mut parts: [flt2dec::Part; 6] = mem::uninitialized();
79+
let mut buf = MaybeUninit::<[u8; 1024]>::uninitialized(); // enough for f32 and f64
80+
let mut parts = MaybeUninit::<[flt2dec::Part; 6]>::uninitialized();
8081
let formatted = flt2dec::to_exact_exp_str(flt2dec::strategy::grisu::format_exact,
8182
*num, sign, precision,
82-
upper, &mut buf, &mut parts);
83+
upper, buf.get_mut(), parts.get_mut());
8384
fmt.pad_formatted_parts(&formatted)
8485
}
8586
}
@@ -94,11 +95,11 @@ fn float_to_exponential_common_shortest<T>(fmt: &mut Formatter,
9495
{
9596
unsafe {
9697
// enough for f32 and f64
97-
let mut buf: [u8; flt2dec::MAX_SIG_DIGITS] = mem::uninitialized();
98-
let mut parts: [flt2dec::Part; 6] = mem::uninitialized();
98+
let mut buf = MaybeUninit::<[u8; flt2dec::MAX_SIG_DIGITS]>::uninitialized();
99+
let mut parts = MaybeUninit::<[flt2dec::Part; 6]>::uninitialized();
99100
let formatted = flt2dec::to_shortest_exp_str(flt2dec::strategy::grisu::format_shortest,
100101
*num, sign, (0, 0), upper,
101-
&mut buf, &mut parts);
102+
buf.get_mut(), parts.get_mut());
102103
fmt.pad_formatted_parts(&formatted)
103104
}
104105
}

0 commit comments

Comments
 (0)