Struct IdentStr

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

A borrowed identifier.

An identifier is the name of an entity (module, resource, function, etc) in Move.

A valid identifier consists of an ASCII string which satisfies any of the conditions:

  • The first character is a letter and the remaining characters are letters, digits or underscores.
  • The first character is an underscore, and there is at least one further letter, digit or underscore.

The spec for allowed identifiers is similar to Rust’s spec (as of version 1.38).

Allowed identifiers are currently restricted to ASCII due to unresolved issues with Unicode normalization. See Rust issue #55467 and the associated RFC for some discussion. Unicode identifiers may eventually be supported once these issues are worked out.

This module only determines allowed identifiers at the bytecode level. Move source code will likely be more restrictive than even this, with a “raw identifier” escape hatch similar to Rust’s r# identifiers.

Among other things, identifiers are used to:

  • specify keys for lookups in storage
  • do cross-module lookups while executing transactions

Implementations§

Source§

impl IdentStr

Source

pub fn new(s: &str) -> Result<&Self, InvalidIdentifierError>

Source

pub const fn cast(s: &'static str) -> &'static Self

Compile-time validated constructor from static string slice.

§Example

Creating a valid static or const IdentStr:

use moverox_types::IdentStr;
const VALID_IDENT: &'static IdentStr = IdentStr::cast("MyCoolIdentifier");

const THING_NAME: &'static str = "thing_name";
const THING_IDENT: &'static IdentStr = IdentStr::cast(THING_NAME);

In contrast, creating an invalid IdentStr will fail at compile time:

use moverox_types::IdentStr;
const INVALID_IDENT: &'static IdentStr = IdentStr::cast("123Foo"); // Fails to compile!
Source

pub fn is_valid(s: impl AsRef<str>) -> bool

Returns true if this string is a valid identifier.

Source

pub const fn len(&self) -> usize

Returns the length of self in bytes.

Source

pub const fn is_empty(&self) -> bool

Returns true if self has a length of zero bytes.

Source

pub const fn as_str(&self) -> &str

Converts self to a &str.

This is not implemented as a From trait to discourage automatic conversions – these conversions should not typically happen.

Source

pub const fn as_bytes(&self) -> &[u8]

Converts self to a byte slice.

Trait Implementations§

Source§

impl Borrow<IdentStr> for Identifier

Source§

fn borrow(&self) -> &IdentStr

Immutably borrows from an owned value. Read more
Source§

impl Debug for IdentStr

Source§

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

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

impl Display for IdentStr

Source§

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

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

impl Hash for IdentStr

Source§

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

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

impl Ord for IdentStr

Source§

fn cmp(&self, other: &IdentStr) -> Ordering

This method returns an Ordering between self and other. Read more
Source§

impl PartialEq for IdentStr

Source§

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

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

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 PartialOrd for IdentStr

Source§

fn partial_cmp(&self, other: &IdentStr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl RefCast for IdentStr

Source§

type From = str

Source§

fn ref_cast(_from: &Self::From) -> &Self

Source§

fn ref_cast_mut(_from: &mut Self::From) -> &mut Self

Source§

impl ToOwned for IdentStr

Source§

type Owned = Identifier

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> Identifier

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

fn clone_into(&self, target: &mut Self::Owned)

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

impl Eq for IdentStr

Source§

impl StructuralPartialEq for IdentStr

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more