Struct rhai::plugin::Dynamic [−][src]
pub struct Dynamic(_);
Expand description
Dynamic type containing any value.
Implementations
Does this Dynamic hold a variant data type
instead of one of the supported system primitive types?
Is the value held by this Dynamic shared?
Not available under no_closure.
Get the TypeId of the value held by this Dynamic.
Panics or Deadlocks When Value is Shared
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
A Dynamic containing the integer negative one.
A Dynamic containing 0.0.
Not available under no_float.
A Dynamic containing the -1.0.
Not available under no_float.
Is this Dynamic read-only?
Constant Dynamic values are read-only. If a &mut Dynamic to such a constant
is passed to a Rust function, the function can use this information to return an error of
ErrorAssignmentToConstant
if its value is going to be modified. This safe-guards constant values from being modified
from within Rust functions.
Create a Dynamic from any type. A Dynamic value is simply returned as is.
Safety
This type uses some unsafe code, mainly for type casting.
Notes
Beware that you need to pass in an Array type for it to be recognized as an Array.
A Vec<T> does not get automatically converted to an Array, but will be a generic
restricted trait object instead, because Vec<T> is not a supported standard type.
Similarly, passing in a HashMap<String, T> or
BTreeMap<String, T> will not get a Map but a trait object.
Examples
use rhai::Dynamic; let result = Dynamic::from(42_i64); assert_eq!(result.type_name(), "i64"); assert_eq!(result.to_string(), "42"); let result = Dynamic::from("hello"); assert_eq!(result.type_name(), "string"); assert_eq!(result.to_string(), "hello"); let new_result = Dynamic::from(result); assert_eq!(new_result.type_name(), "string"); assert_eq!(new_result.to_string(), "hello");
Turn the Dynamic value into a shared Dynamic value backed by an
Rc<RefCell<Dynamic>> or
Arc<RwLock<Dynamic>>
depending on the sync feature.
Not available under no_closure.
Shared Dynamic values are relatively cheap to clone as they simply increment the
reference counts.
Shared Dynamic values can be converted seamlessly to and from ordinary Dynamic
values.
If the Dynamic value is already shared, this method returns itself.
Convert the Dynamic value into specific type.
Casting to a Dynamic just returns as is, but if it contains a shared value,
it is cloned into a Dynamic with a normal value.
Returns None if types mismatched.
Panics or Deadlocks
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
These normally shouldn’t occur since most operations in Rhai is single-threaded.
Example
use rhai::Dynamic; let x = Dynamic::from(42_u32); assert_eq!(x.try_cast::<u32>().unwrap(), 42);
Convert the Dynamic value into a specific type.
Casting to a Dynamic just returns as is, but if it contains a shared value,
it is cloned into a Dynamic with a normal value.
Returns None if types mismatched.
Panics or Deadlocks
Panics if the cast fails (e.g. the type of the actual value is not the same as the specified type).
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
These normally shouldn’t occur since most operations in Rhai is single-threaded.
Example
use rhai::Dynamic; let x = Dynamic::from(42_u32); assert_eq!(x.cast::<u32>(), 42);
Clone the Dynamic value and convert it into a specific type.
Casting to a Dynamic just returns as is, but if it contains a shared value,
it is cloned into a Dynamic with a normal value.
Returns None if types mismatched.
Panics or Deadlocks
Panics if the cast fails (e.g. the type of the actual value is not the same as the specified type).
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
These normally shouldn’t occur since most operations in Rhai is single-threaded.
Example
use rhai::Dynamic; let x = Dynamic::from(42_u32); let y = &x; assert_eq!(y.clone_cast::<u32>(), 42);
Get a reference of a specific type to the Dynamic.
Casting to Dynamic just returns a reference to it.
Returns None if the cast fails.
Panics or Deadlocks When Value is Shared
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
Get a mutable reference of a specific type to the Dynamic.
Casting to Dynamic just returns a mutable reference to it.
Returns None if the cast fails.
Panics or Deadlocks When Value is Shared
Under the sync feature, this call may deadlock, or panic.
Otherwise, this call panics if the data is currently borrowed for write.
Cast the Dynamic as a unit () and return it.
Returns the name of the actual type if the cast fails.
👎 Deprecated since 0.20.3: this method is deprecated and will be removed in the future
this method is deprecated and will be removed in the future
Convert the Dynamic into a String and return it.
If there are other references to the same string, a cloned copy is returned.
Returns the name of the actual type if the cast fails.
Deprecated
This method is deprecated and will be removed in the future.
Use as_string instead.
👎 Deprecated since 0.20.3: this method is deprecated and will be removed in the future
this method is deprecated and will be removed in the future
Convert the Dynamic into an ImmutableString and return it.
Returns the name of the actual type if the cast fails.
Deprecated
This method is deprecated and will be removed in the future.
Use as_immutable_string instead.
Convert the Dynamic into an ImmutableString and return it.
Returns the name of the actual type if the cast fails.
Trait Implementations
Deserialize this value from the given Serde deserializer. Read more
Performs the conversion.
Performs the conversion.
Performs the conversion.
Creates a value from an iterator. Read more
Auto Trait Implementations
impl !RefUnwindSafe for Dynamicimpl !UnwindSafe for DynamicBlanket Implementations
Mutably borrows from an owned value. Read more