ruby_rstring_flags

Enum ruby_rstring_flags 

Source
#[repr(u32)]
pub enum ruby_rstring_flags { RSTRING_NOEMBED = 8_192, RSTRING_FSTR = 536_870_912, }
Expand description

§Private

Bits that you can set to ::RBasic::flags.

@warning These enums are not the only bits we use for strings.

@internal

§Actually all bits through FL_USER1 to FL_USER19 are used for strings. Why only this tiny part of them are made public here? @shyouhei can find no reason.

Generated by rb-sys for Ruby mri-x86_64-linux-gnu-3.2.3

Variants§

§

RSTRING_NOEMBED = 8_192

This flag has something to do with memory footprint. If the string is short enough, ruby tries to be creative to abuse padding bits of struct ::RString for storing contents. If this flag is set that string does not do that, to resort to good old fashioned external allocation strategy instead.

@warning This bit has to be considered read-only. Setting/clearing this bit without corresponding fix up must cause immediate SEGV. Also, internal structures of a string change dynamically and transparently throughout of its lifetime. Don’t assume it being persistent.

@internal

§3rd parties must not be aware that there even is more than one way to store a string. Might better be hidden.

Generated by rb-sys for Ruby mri-x86_64-linux-gnu-3.2.3

§

RSTRING_FSTR = 536_870_912

This flag has something to do with infamous “f“string. What is a fstring? Well it is a special subkind of strings that is immutable, deduped globally, and managed by our GC. It is much like a Symbol (in fact Symbols are dynamic these days and are backended using fstrings). This concept has been silently introduced at some point in 2.x era. Since then it gained wider acceptance in the core. But extension libraries could not know that until very recently. Strings of this flag live in a special Limbo deep inside of the interpreter. Never try to manipulate it by hand.

@internal

§Fstrings are not the only variant strings that we implement today. Other things are behind-the-scene. This is the only one that is visible from extension library. There is no clear reason why it has to be. Given there are more “polite” ways to create fstrings, it seems this bit need not be exposed to extension libraries. Might better be hidden.

Generated by rb-sys for Ruby mri-x86_64-linux-gnu-3.2.3

Trait Implementations§

Source§

impl Clone for ruby_rstring_flags

Source§

fn clone(&self) -> ruby_rstring_flags

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ruby_rstring_flags

Source§

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

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

impl Hash for ruby_rstring_flags

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ruby_rstring_flags

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ruby_rstring_flags

Source§

impl Eq for ruby_rstring_flags

Source§

impl StructuralPartialEq for ruby_rstring_flags

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.