pub struct Class<'js, C>(/* private fields */)
where
C: JsClass<'js>;
Expand description
A object which is instance of a Rust class.
Implementations§
source§impl<'js, C> Class<'js, C>where
C: JsClass<'js>,
impl<'js, C> Class<'js, C>where
C: JsClass<'js>,
sourcepub fn instance(ctx: Ctx<'js>, value: C) -> Result<Class<'js, C>, Error>
pub fn instance(ctx: Ctx<'js>, value: C) -> Result<Class<'js, C>, Error>
Create a class from a Rust object.
sourcepub fn instance_proto(
value: C,
proto: Object<'js>
) -> Result<Class<'js, C>, Error>
pub fn instance_proto( value: C, proto: Object<'js> ) -> Result<Class<'js, C>, Error>
Create a class from a Rust object with a given prototype.
sourcepub fn prototype(ctx: Ctx<'js>) -> Option<Object<'js>>
pub fn prototype(ctx: Ctx<'js>) -> Option<Object<'js>>
Returns the prototype for the class.
Returns None
if the class is not yet registered or if the class doesn’t have a prototype.
sourcepub fn create_constructor(
ctx: &Ctx<'js>
) -> Result<Option<Constructor<'js>>, Error>
pub fn create_constructor( ctx: &Ctx<'js> ) -> Result<Option<Constructor<'js>>, Error>
Create a constructor for the current class using its definition.
sourcepub fn define(object: &Object<'js>) -> Result<(), Error>
pub fn define(object: &Object<'js>) -> Result<(), Error>
Defines the predefined constructor of this class, if there is one, onto the given object.
sourcepub fn is_registered(ctx: &Ctx<'js>) -> bool
pub fn is_registered(ctx: &Ctx<'js>) -> bool
Returns if the class is registered in the runtime.
sourcepub fn register(ctx: &Ctx<'js>) -> Result<(), Error>
pub fn register(ctx: &Ctx<'js>) -> Result<(), Error>
Registers the class C
into the runtime.
It is required to call this function on every context in which the class is used before using the class. Otherwise the class.
It is fine to call this function multiple times, even on the same context. The class and its prototype will only be registered once.
sourcepub fn get_cell<'a>(&self) -> &'a JsCell<'js, C>
pub fn get_cell<'a>(&self) -> &'a JsCell<'js, C>
Returns a reference to the underlying object contained in a cell.
sourcepub fn borrow_mut<'a>(&'a self) -> BorrowMut<'a, 'js, C>
pub fn borrow_mut<'a>(&'a self) -> BorrowMut<'a, 'js, C>
Borrow the Rust class type mutably.
JavaScript classes behave similar to Rc
in Rust, you can essentially think
of a class object as a Rc<RefCell<C>>
and with similar borrowing functionality.
§Panic
This function panics if the class is already borrowed mutably or immutably, or the Class can’t be borrowed mutably.
sourcepub fn try_borrow<'a>(&'a self) -> Result<Borrow<'a, 'js, C>, Error>
pub fn try_borrow<'a>(&'a self) -> Result<Borrow<'a, 'js, C>, Error>
Try to borrow the Rust class type.
JavaScript classes behave similar to Rc
in Rust, you can essentially think
of a class object as a Rc<RefCell<C>>
and with similar borrowing functionality.
This returns an error when the class is already borrowed mutably.
sourcepub fn try_borrow_mut<'a>(&'a self) -> Result<BorrowMut<'a, 'js, C>, Error>
pub fn try_borrow_mut<'a>(&'a self) -> Result<BorrowMut<'a, 'js, C>, Error>
Try to borrow the Rust class type mutably.
JavaScript classes behave similar to Rc
in Rust, you can essentially think
of a class object as a Rc<RefCell<C>>
and with similar borrowing functionality.
This returns an error when the class is already borrowed mutably, immutably or the class can’t be borrowed mutably.
sourcepub fn into_inner(self) -> Object<'js>
pub fn into_inner(self) -> Object<'js>
Turns the class back into a generic object.
sourcepub fn into_value(self) -> Value<'js>
pub fn into_value(self) -> Value<'js>
Turn the class into a value.
sourcepub fn from_object(object: &Object<'js>) -> Option<Class<'js, C>>
pub fn from_object(object: &Object<'js>) -> Option<Class<'js, C>>
Converts a generic object into a class if the object is of the right class.
Methods from Deref<Target = Object<'js>>§
sourcepub fn prop<K, V, P>(&self, key: K, prop: V) -> Result<(), Error>where
K: IntoAtom<'js>,
V: AsProperty<'js, P>,
Available on crate feature properties
only.
pub fn prop<K, V, P>(&self, key: K, prop: V) -> Result<(), Error>where
K: IntoAtom<'js>,
V: AsProperty<'js, P>,
properties
only.Define a property of an object
// Define readonly property without value
obj.prop("no_val", ()).unwrap();
// Define readonly property with value
obj.prop("ro_str", "Some const text").unwrap();
// Define readonly property with value and make it to be writable
obj.prop("ro_str2", Property::from("Some const text").writable()).unwrap();
// Define readonly property using getter and make it to be enumerable
obj.prop("ro_str_get", Accessor::from(|| "Some readable text").enumerable()).unwrap();
// Define readonly property using getter and setter
obj.prop("ro_str_get_set",
Accessor::from(|| "Some text")
.set(|new_val: String| { /* do something */ })
).unwrap();
sourcepub fn contains_key<K>(&self, k: K) -> Result<bool, Error>where
K: IntoAtom<'js>,
pub fn contains_key<K>(&self, k: K) -> Result<bool, Error>where
K: IntoAtom<'js>,
check whether the object contains a certain key.
sourcepub fn set<K, V>(&self, key: K, value: V) -> Result<(), Error>
pub fn set<K, V>(&self, key: K, value: V) -> Result<(), Error>
Set a member of an object to a certain value
sourcepub fn remove<K>(&self, key: K) -> Result<(), Error>where
K: IntoAtom<'js>,
pub fn remove<K>(&self, key: K) -> Result<(), Error>where
K: IntoAtom<'js>,
Remove a member of an object
sourcepub fn keys<K>(&self) -> ObjectKeysIter<'js, K> ⓘwhere
K: FromAtom<'js>,
pub fn keys<K>(&self) -> ObjectKeysIter<'js, K> ⓘwhere
K: FromAtom<'js>,
Get own string enumerable property names of an object
sourcepub fn own_keys<K>(&self, filter: Filter) -> ObjectKeysIter<'js, K> ⓘwhere
K: FromAtom<'js>,
pub fn own_keys<K>(&self, filter: Filter) -> ObjectKeysIter<'js, K> ⓘwhere
K: FromAtom<'js>,
Get own property names of an object
sourcepub fn props<K, V>(&self) -> ObjectIter<'js, K, V> ⓘ
pub fn props<K, V>(&self) -> ObjectIter<'js, K, V> ⓘ
Get own string enumerable properties of an object
sourcepub fn own_props<K, V>(&self, filter: Filter) -> ObjectIter<'js, K, V> ⓘ
pub fn own_props<K, V>(&self, filter: Filter) -> ObjectIter<'js, K, V> ⓘ
Get own properties of an object
sourcepub fn values<K>(&self) -> ObjectValuesIter<'js, K> ⓘwhere
K: FromAtom<'js>,
pub fn values<K>(&self) -> ObjectValuesIter<'js, K> ⓘwhere
K: FromAtom<'js>,
Get own string enumerable property values of an object
sourcepub fn own_values<K>(&self, filter: Filter) -> ObjectValuesIter<'js, K> ⓘwhere
K: FromAtom<'js>,
pub fn own_values<K>(&self, filter: Filter) -> ObjectValuesIter<'js, K> ⓘwhere
K: FromAtom<'js>,
Get own property values of an object
sourcepub fn get_prototype(&self) -> Option<Object<'js>>
pub fn get_prototype(&self) -> Option<Object<'js>>
Get an object prototype
Objects can have no prototype, in this case this function will return null.
sourcepub fn set_prototype(&self, proto: Option<&Object<'js>>) -> Result<(), Error>
pub fn set_prototype(&self, proto: Option<&Object<'js>>) -> Result<(), Error>
Set an object prototype
If called with None the function will set the prototype of the object to null.
This function will error if setting the prototype causes a cycle in the prototype chain.
sourcepub fn is_instance_of(&self, class: impl AsRef<Value<'js>>) -> bool
pub fn is_instance_of(&self, class: impl AsRef<Value<'js>>) -> bool
Check instance of object
sourcepub fn is_array_buffer(&self) -> bool
pub fn is_array_buffer(&self) -> bool
Returns whether the object is an instance of ArrayBuffer
.
sourcepub unsafe fn ref_array_buffer(&self) -> &ArrayBuffer<'_>
pub unsafe fn ref_array_buffer(&self) -> &ArrayBuffer<'_>
sourcepub fn as_array_buffer(&self) -> Option<&ArrayBuffer<'_>>
pub fn as_array_buffer(&self) -> Option<&ArrayBuffer<'_>>
Turn the object into an array buffer if the object is an instance of ArrayBuffer
.
pub fn is_typed_array<T>(&self) -> boolwhere
T: TypedArrayItem,
sourcepub unsafe fn ref_typed_array<'a, T>(&'a self) -> &'a TypedArray<'a, T>where
T: TypedArrayItem,
pub unsafe fn ref_typed_array<'a, T>(&'a self) -> &'a TypedArray<'a, T>where
T: TypedArrayItem,
pub fn as_typed_array<T>(&self) -> Option<&TypedArray<'_, T>>where
T: TypedArrayItem,
sourcepub fn instance_of<C>(&self) -> boolwhere
C: JsClass<'js>,
pub fn instance_of<C>(&self) -> boolwhere
C: JsClass<'js>,
Returns if the object is of a certain Rust class.
Methods from Deref<Target = Value<'js>>§
sourcepub fn is_undefined(&self) -> bool
pub fn is_undefined(&self) -> bool
Returns if the value is the JavaScript undefined value.
sourcepub fn is_function(&self) -> bool
pub fn is_function(&self) -> bool
Check if the value is a function
sourcepub fn is_constructor(&self) -> bool
pub fn is_constructor(&self) -> bool
Check if the value is a constructor function
sourcepub fn is_promise(&self) -> bool
pub fn is_promise(&self) -> bool
Check if the value is a promise.
sourcepub fn is_exception(&self) -> bool
pub fn is_exception(&self) -> bool
Check if the value is an exception
sourcepub fn get<T>(&self) -> Result<T, Error>where
T: FromJs<'js>,
pub fn get<T>(&self) -> Result<T, Error>where
T: FromJs<'js>,
Convert from value to specified type
sourcepub unsafe fn ref_string(&self) -> &String<'js>
pub unsafe fn ref_string(&self) -> &String<'js>
sourcepub unsafe fn ref_symbol(&self) -> &Symbol<'js>
pub unsafe fn ref_symbol(&self) -> &Symbol<'js>
sourcepub unsafe fn ref_object(&self) -> &Object<'js>
pub unsafe fn ref_object(&self) -> &Object<'js>
sourcepub unsafe fn ref_function(&self) -> &Function<'js>
pub unsafe fn ref_function(&self) -> &Function<'js>
sourcepub fn as_function(&self) -> Option<&Function<'js>>
pub fn as_function(&self) -> Option<&Function<'js>>
Try reinterpret as Function
sourcepub unsafe fn ref_constructor(&self) -> &Constructor<'js>
pub unsafe fn ref_constructor(&self) -> &Constructor<'js>
Interpret as Constructor
§Safety
You should be sure that the value already is of required type before to do it.
sourcepub fn as_constructor(&self) -> Option<&Constructor<'js>>
pub fn as_constructor(&self) -> Option<&Constructor<'js>>
Try reinterpret as Constructor
sourcepub unsafe fn ref_promise(&self) -> &Promise<'js>
pub unsafe fn ref_promise(&self) -> &Promise<'js>
sourcepub fn as_promise(&self) -> Option<&Promise<'js>>
pub fn as_promise(&self) -> Option<&Promise<'js>>
Try reinterpret as Promise
sourcepub unsafe fn ref_exception(&self) -> &Exception<'js>
pub unsafe fn ref_exception(&self) -> &Exception<'js>
sourcepub fn as_exception(&self) -> Option<&Exception<'js>>
pub fn as_exception(&self) -> Option<&Exception<'js>>
Try reinterpret as Exception
sourcepub unsafe fn ref_big_int(&self) -> &BigInt<'js>
pub unsafe fn ref_big_int(&self) -> &BigInt<'js>
sourcepub fn as_big_int(&self) -> Option<&BigInt<'js>>
pub fn as_big_int(&self) -> Option<&BigInt<'js>>
Try reinterpret as BigInt
Trait Implementations§
source§impl<'js, C> PartialEq for Class<'js, C>where
C: JsClass<'js>,
impl<'js, C> PartialEq for Class<'js, C>where
C: JsClass<'js>,
impl<'js, C> Eq for Class<'js, C>where
C: JsClass<'js>,
Auto Trait Implementations§
impl<'js, C> Freeze for Class<'js, C>
impl<'js, C> RefUnwindSafe for Class<'js, C>where
C: RefUnwindSafe,
impl<'js, C> !Send for Class<'js, C>
impl<'js, C> !Sync for Class<'js, C>
impl<'js, C> Unpin for Class<'js, C>where
C: Unpin,
impl<'js, C> !UnwindSafe for Class<'js, C>
Blanket Implementations§
source§impl<'js, T> AsProperty<'js, T> for Twhere
T: IntoJs<'js>,
impl<'js, T> AsProperty<'js, T> for Twhere
T: IntoJs<'js>,
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<'js, T> FromParam<'js> for Twhere
T: FromJs<'js>,
impl<'js, T> FromParam<'js> for Twhere
T: FromJs<'js>,
source§fn param_requirement() -> ParamRequirement
fn param_requirement() -> ParamRequirement
source§fn from_param<'a>(params: &mut ParamsAccessor<'a, 'js>) -> Result<T, Error>
fn from_param<'a>(params: &mut ParamsAccessor<'a, 'js>) -> Result<T, Error>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more