deno_core

Struct ResourceTable

Source
pub struct ResourceTable { /* private fields */ }
Expand description

Map-like data structure storing Deno’s resources (equivalent to file descriptors).

Provides basic methods for element access. A resource can be of any type. Different types of resources can be stored in the same map, and provided with a name for description.

Each resource is identified through a resource ID (rid), which acts as the key in the map.

Implementations§

Source§

impl ResourceTable

Source

pub fn len(&self) -> usize

Returns the number of resources currently active in the resource table. Resources taken from the table do not contribute to this count.

Source

pub fn is_empty(&self) -> bool

Returns whether this table is empty.

Source

pub fn add<T: Resource>(&mut self, resource: T) -> ResourceId

Inserts resource into the resource table, which takes ownership of it.

The resource type is erased at runtime and must be statically known when retrieving it through get().

Returns a unique resource ID, which acts as a key for this resource.

Source

pub fn add_rc<T: Resource>(&mut self, resource: Rc<T>) -> ResourceId

Inserts a Rc-wrapped resource into the resource table.

The resource type is erased at runtime and must be statically known when retrieving it through get().

Returns a unique resource ID, which acts as a key for this resource.

Source

pub fn add_rc_dyn(&mut self, resource: Rc<dyn Resource>) -> ResourceId

Source

pub fn has(&self, rid: ResourceId) -> bool

Returns true if any resource with the given rid exists.

Source

pub fn get<T: Resource>(&self, rid: ResourceId) -> Result<Rc<T>, Error>

Returns a reference counted pointer to the resource of type T with the given rid. If rid is not present or has a type different than T, this function returns None.

Source

pub fn get_any(&self, rid: ResourceId) -> Result<Rc<dyn Resource>, Error>

Source

pub fn replace<T: Resource>(&mut self, rid: ResourceId, resource: T)

Replaces a resource with a new resource.

Panics if the resource does not exist.

Source

pub fn take<T: Resource>(&mut self, rid: ResourceId) -> Result<Rc<T>, Error>

Removes a resource of type T from the resource table and returns it. If a resource with the given rid exists but its type does not match T, it is not removed from the resource table. Note that the resource’s close() method is not called.

Also note that there might be a case where the returned Rc<T> is referenced by other variables. That is, we cannot assume that Rc::strong_count(&returned_rc) is always equal to 1 on success. In particular, be really careful when you want to extract the inner value of type T from Rc<T>.

Source

pub fn take_any(&mut self, rid: ResourceId) -> Result<Rc<dyn Resource>, Error>

Removes a resource from the resource table and returns it. Note that the resource’s close() method is not called.

Also note that there might be a case where the returned Rc<T> is referenced by other variables. That is, we cannot assume that Rc::strong_count(&returned_rc) is always equal to 1 on success. In particular, be really careful when you want to extract the inner value of type T from Rc<T>.

Source

pub fn close(&mut self, rid: ResourceId) -> Result<(), Error>

👎Deprecated: This method may deadlock. Use take() and close() instead.

Removes the resource with the given rid from the resource table. If the only reference to this resource existed in the resource table, this will cause the resource to be dropped. However, since resources are reference counted, therefore pending ops are not automatically cancelled. A resource may implement the close() method to perform clean-ups such as canceling ops.

Source

pub fn names(&self) -> impl Iterator<Item = (ResourceId, Cow<'_, str>)>

Returns an iterator that yields a (id, name) pair for every resource that’s currently in the resource table. This can be used for debugging purposes or to implement the op_resources op. Note that the order in which items appear is not specified.

§Example
let resource_names = resource_table.names().collect::<Vec<_>>();
Source

pub fn get_fd(&self, rid: ResourceId) -> Result<ResourceHandleFd, Error>

Retrieves the ResourceHandleFd for a given resource, for potential optimization purposes within ops.

Source

pub fn get_socket(&self, rid: ResourceId) -> Result<ResourceHandleSocket, Error>

Retrieves the ResourceHandleSocket for a given resource, for potential optimization purposes within ops.

Source

pub fn get_handle(&self, rid: ResourceId) -> Result<ResourceHandle, Error>

Retrieves the ResourceHandle for a given resource, for potential optimization purposes within ops.

Trait Implementations§

Source§

impl Default for ResourceTable

Source§

fn default() -> ResourceTable

Returns the “default value” for a type. Read more

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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.