Struct godot::builtin::StringName
pub struct StringName { /* private fields */ }
Expand description
A string optimized for unique names.
StringNames are immutable strings designed for representing unique names. StringName ensures that only one instance of a given name exists.
§Ordering
In Godot, StringName
s are not ordered lexicographically, and the ordering relation is not stable across multiple runs of your
application. Therefore, this type does not implement PartialOrd
and Ord
, as it would be very easy to introduce bugs by accidentally
relying on lexicographical ordering.
Instead, we provide transient_ord()
for ordering relations.
§Null bytes
Note that Godot ignores any bytes after a null-byte. This means that for instance "hello, world!"
and "hello, world!\0 ignored by Godot"
will be treated as the same string if converted to a StringName
.
Implementations§
§impl StringName
impl StringName
pub fn from_latin1_with_nul(latin1_c_str: &'static [u8]) -> StringName
👎Deprecated: Since Rust 1.77, you can use c-string literals with From/Into
instead of this function.Available on since_api="4.2"
only.
pub fn from_latin1_with_nul(latin1_c_str: &'static [u8]) -> StringName
From/Into
instead of this function.since_api="4.2"
only.Creates a StringName
from a static, nul-terminated ASCII/Latin-1 b"string"
literal.
Avoids unnecessary copies and allocations and directly uses the backing buffer. Useful for literals.
§Example
use godot::builtin::StringName;
// '±' is a Latin-1 character with codepoint 0xB1. Note that this is not UTF-8, where it would need two bytes.
let sname = StringName::from_latin1_with_nul(b"\xb1 Latin-1 string\0");
§Panics
When the string is not nul-terminated or contains interior nul bytes.
Note that every byte is valid in Latin-1, so there is no encoding validation being performed.
pub fn transient_ord(&self) -> TransientStringNameOrd<'_>
pub fn transient_ord(&self) -> TransientStringNameOrd<'_>
O(1), non-lexicographic, non-stable ordering relation.
The result of the comparison is not lexicographic and not stable across multiple runs of your application.
However, it is very fast. It doesn’t depend on the length of the strings, but on the memory location of string names. This can still be useful if you need to establish an ordering relation, but are not interested in the actual order of the strings (example: binary search).
For lexicographical ordering, convert to GString
(significantly slower).
Trait Implementations§
§impl Clone for StringName
impl Clone for StringName
§fn clone(&self) -> StringName
fn clone(&self) -> StringName
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for StringName
impl Debug for StringName
Uses literal syntax from GDScript: &"string_name"
§impl Default for StringName
impl Default for StringName
§fn default() -> StringName
fn default() -> StringName
§impl Display for StringName
impl Display for StringName
§impl Export for StringName
impl Export for StringName
§fn default_export_info() -> PropertyHintInfo
fn default_export_info() -> PropertyHintInfo
§impl From<&'static CStr> for StringName
Available on since_api="4.2"
only.
impl From<&'static CStr> for StringName
since_api="4.2"
only.§fn from(c_str: &'static CStr) -> StringName
fn from(c_str: &'static CStr) -> StringName
Creates a StringName
from a static ASCII/Latin-1 c"string"
.
This avoids unnecessary copies and allocations and directly uses the backing buffer. Useful for literals.
Note that while Latin-1 encoding is the most common encoding for c-strings, it isn’t a requirement. So if your c-string uses a different encoding (e.g. UTF-8), it is possible that some characters will not show up as expected.
§Example
use godot::builtin::StringName;
// '±' is a Latin-1 character with codepoint 0xB1. Note that this is not UTF-8, where it would need two bytes.
let sname = StringName::from(c"\xb1 Latin-1 string");
§impl From<&GString> for StringName
impl From<&GString> for StringName
§fn from(string: &GString) -> StringName
fn from(string: &GString) -> StringName
§impl From<&NodePath> for StringName
impl From<&NodePath> for StringName
§fn from(path: &NodePath) -> StringName
fn from(path: &NodePath) -> StringName
§impl From<&String> for StringName
impl From<&String> for StringName
§fn from(value: &String) -> StringName
fn from(value: &String) -> StringName
§impl From<&StringName> for GString
impl From<&StringName> for GString
§fn from(string: &StringName) -> GString
fn from(string: &StringName) -> GString
§impl From<&StringName> for NodePath
impl From<&StringName> for NodePath
§fn from(string_name: &StringName) -> NodePath
fn from(string_name: &StringName) -> NodePath
§impl From<&str> for StringName
impl From<&str> for StringName
§fn from(string: &str) -> StringName
fn from(string: &str) -> StringName
§impl From<GString> for StringName
impl From<GString> for StringName
§fn from(string: GString) -> StringName
fn from(string: GString) -> StringName
Converts this GString
to a StringName
.
This is identical to StringName::from(&string)
, and as such there is no performance benefit.
§impl From<NodePath> for StringName
impl From<NodePath> for StringName
§fn from(path: NodePath) -> StringName
fn from(path: NodePath) -> StringName
Converts this NodePath
to a StringName
.
This is identical to StringName::from(&path)
, and as such there is no performance benefit.
§impl From<String> for StringName
impl From<String> for StringName
§fn from(value: String) -> StringName
fn from(value: String) -> StringName
§impl From<StringName> for GString
impl From<StringName> for GString
§fn from(string_name: StringName) -> GString
fn from(string_name: StringName) -> GString
Converts this StringName
to a GString
.
This is identical to GString::from(&string_name)
, and as such there is no performance benefit.
§impl From<StringName> for NodePath
impl From<StringName> for NodePath
§fn from(string_name: StringName) -> NodePath
fn from(string_name: StringName) -> NodePath
Converts this StringName
to a NodePath
.
This is identical to NodePath::from(&string_name)
, and as such there is no performance benefit.
§impl FromGodot for StringName
impl FromGodot for StringName
§fn try_from_godot(
via: <StringName as GodotConvert>::Via,
) -> Result<StringName, ConvertError>
fn try_from_godot( via: <StringName as GodotConvert>::Via, ) -> Result<StringName, ConvertError>
Err
on failure.§fn from_godot(via: Self::Via) -> Self
fn from_godot(via: Self::Via) -> Self
§fn try_from_variant(variant: &Variant) -> Result<Self, ConvertError>
fn try_from_variant(variant: &Variant) -> Result<Self, ConvertError>
Variant
, returning Err
on failure.§fn from_variant(variant: &Variant) -> Self
fn from_variant(variant: &Variant) -> Self
§impl FromStr for StringName
impl FromStr for StringName
§type Err = Infallible
type Err = Infallible
§fn from_str(string: &str) -> Result<StringName, <StringName as FromStr>::Err>
fn from_str(string: &str) -> Result<StringName, <StringName as FromStr>::Err>
s
to return a value of this type. Read more§impl GodotConvert for StringName
impl GodotConvert for StringName
§type Via = StringName
type Via = StringName
Self
is represented in Godot.§impl Hash for StringName
impl Hash for StringName
§impl PartialEq for StringName
impl PartialEq for StringName
§fn eq(&self, other: &StringName) -> bool
fn eq(&self, other: &StringName) -> bool
self
and other
values to be equal, and is used
by ==
.§impl ToGodot for StringName
impl ToGodot for StringName
§fn to_godot(&self) -> <StringName as GodotConvert>::Via
fn to_godot(&self) -> <StringName as GodotConvert>::Via
§fn into_godot(self) -> <StringName as GodotConvert>::Via
fn into_godot(self) -> <StringName as GodotConvert>::Via
§fn to_variant(&self) -> Variant
fn to_variant(&self) -> Variant
§impl TypeStringHint for StringName
impl TypeStringHint for StringName
§fn type_string() -> String
fn type_string() -> String
§impl Var for StringName
impl Var for StringName
fn get_property(&self) -> <StringName as GodotConvert>::Via
fn set_property(&mut self, value: <StringName as GodotConvert>::Via)
fn property_hint() -> PropertyHintInfo
impl ArrayElement for StringName
impl Eq for StringName
impl GodotType for StringName
impl Send for StringName
impl Sync for StringName
Auto Trait Implementations§
impl Freeze for StringName
impl RefUnwindSafe for StringName
impl Unpin for StringName
impl UnwindSafe for StringName
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)