Skip to main content

Remarks

Struct Remarks 

Source
pub struct Remarks(/* private fields */);
Expand description

What a constant does that the dialect being compiled has an opinion about, or that happened to it on the way to a value.

A bitmask rather than a list, because a constant may earn several and a Vec per constant on a file full of them is a cost with nothing to show for it. Every one of these is legal in the dialect this compiler defaults to, so none of them is an error here: the caller decides what -pedantic, -Woverflow and -Werror make of them.

Implementations§

Source§

impl Remarks

Source

pub const NONE: Remarks

Nothing to say.

Source

pub const BINARY: Remarks

A 0b constant before C23, where it is a GNU extension both compilers accept.

Source

pub const SEPARATORS: Remarks

A digit separator before C23, which neither compiler accepts there.

Source

pub const BIT_INT: Remarks

A wb suffix before C23.

Source

pub const LONG_LONG: Remarks

An ll suffix under -std=c89, where GCC says “use of C99 long long integer constant”.

Source

pub const UNSIGNED: Remarks

A decimal constant with no u suffix that fits no signed type, so it became an unsigned one. GCC says “integer constant is so large that it is unsigned”, and it is worth saying because the constant’s arithmetic is now unsigned and its negation is not negative.

Source

pub const HEX_FLOAT: Remarks

A hexadecimal floating constant before C99, where GCC says “use of C99 hexadecimal floating constant”.

Source

pub const EXTENDED_SUFFIX: Remarks

A suffix that names a type ISO C does not have: q, w, or one of the _FloatN and _FloatNx ones. GCC says “non-standard suffix on floating constant”, and separately that ISO C does not support the type.

Source

pub const DOUBLE_SUFFIX: Remarks

A d suffix, which is a double written the long way. GCC gives this one its own wording, “suffix for double constant is a GCC extension”, and gives it in every dialect rather than only under -pedantic.

Source

pub const IMAGINARY: Remarks

An i or j suffix. GCC says “imaginary constants are a GCC extension”, in every dialect, because no version of C has a spelling for one.

Source

pub const OUT_OF_RANGE: Remarks

A value too large for its type, which became an infinity. GCC says “floating constant exceeds range of ‘double’” and names the type.

Source

pub const TRUNCATED: Remarks

A nonzero value too small for its type, which became a zero. GCC says “floating constant truncated to zero”, and it is worth saying because the program now divides by zero where it meant to divide by something very small.

Source

pub const MULTICHARACTER: Remarks

A character constant holding more than one character, whose value GCC builds by shifting them together and which the standard leaves implementation defined. GCC says “multi-character character constant”.

Source

pub const TOO_LONG: Remarks

A character constant holding more characters than its type has room for, so the ones at the front are gone. GCC says “character constant too long for its type”, and says it instead of the multi-character remark rather than as well as it.

Source

pub const UNKNOWN_ESCAPE: Remarks

An escape whose letter means nothing, which is the letter itself and a warning in both compilers. GCC says “unknown escape sequence”.

Source

pub const NON_ISO_ESCAPE: Remarks

\e, the escape character, which both compilers have and no standard does. GCC says “non-ISO-standard escape sequence”.

Source

pub const HEX_ESCAPE_OUT_OF_RANGE: Remarks

A \x escape whose value does not fit the element it is written in, so it was truncated. GCC says “hex escape sequence out of range”.

Source

pub const OCTAL_ESCAPE_OUT_OF_RANGE: Remarks

An octal escape whose value does not fit the element it is written in. GCC gives this its own wording, “octal escape sequence out of range”, which is why it is its own flag.

Source

pub const UCN: Remarks

A universal character name before C99, where GCC says “universal character names are only valid in C++ and C99” and converts it anyway.

Source

pub const fn has(self, other: Remarks) -> bool

Whether every remark in other is set here.

Source

pub const fn with(self, other: Remarks) -> Remarks

This set with other added.

Source

pub const fn is_none(self) -> bool

Whether there is nothing to say.

Trait Implementations§

Source§

impl Clone for Remarks

Source§

fn clone(&self) -> Remarks

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Remarks

Source§

impl Debug for Remarks

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Remarks

Source§

fn default() -> Remarks

Returns the “default value” for a type. Read more
Source§

impl Eq for Remarks

Source§

impl PartialEq for Remarks

Source§

fn eq(&self, other: &Remarks) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Remarks

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.