use undef for uninitialized bytes in constants
This commit is contained in:
parent
7b0e554ee2
commit
4d635fdf63
7 changed files with 202 additions and 21 deletions
|
@ -5,6 +5,7 @@ use crate::spec::Target;
|
|||
|
||||
use std::convert::{TryFrom, TryInto};
|
||||
use std::fmt;
|
||||
use std::iter::Step;
|
||||
use std::num::NonZeroUsize;
|
||||
use std::ops::{Add, AddAssign, Deref, Mul, Range, RangeInclusive, Sub};
|
||||
use std::str::FromStr;
|
||||
|
@ -440,6 +441,43 @@ impl AddAssign for Size {
|
|||
}
|
||||
}
|
||||
|
||||
impl Step for Size {
|
||||
#[inline]
|
||||
fn steps_between(start: &Self, end: &Self) -> Option<usize> {
|
||||
u64::steps_between(&start.bytes(), &end.bytes())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn forward_checked(start: Self, count: usize) -> Option<Self> {
|
||||
u64::forward_checked(start.bytes(), count).map(Self::from_bytes)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn forward(start: Self, count: usize) -> Self {
|
||||
Self::from_bytes(u64::forward(start.bytes(), count))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
unsafe fn forward_unchecked(start: Self, count: usize) -> Self {
|
||||
Self::from_bytes(u64::forward_unchecked(start.bytes(), count))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn backward_checked(start: Self, count: usize) -> Option<Self> {
|
||||
u64::backward_checked(start.bytes(), count).map(Self::from_bytes)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn backward(start: Self, count: usize) -> Self {
|
||||
Self::from_bytes(u64::backward(start.bytes(), count))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
unsafe fn backward_unchecked(start: Self, count: usize) -> Self {
|
||||
Self::from_bytes(u64::backward_unchecked(start.bytes(), count))
|
||||
}
|
||||
}
|
||||
|
||||
/// Alignment of a type in bytes (always a power of two).
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Encodable, Decodable)]
|
||||
#[derive(HashStable_Generic)]
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#![feature(associated_type_bounds)]
|
||||
#![feature(exhaustive_patterns)]
|
||||
#![feature(min_specialization)]
|
||||
#![feature(step_trait)]
|
||||
#![feature(unchecked_math)]
|
||||
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue