Struct ResourceDesc

Source
pub struct ResourceDesc {
    pub dedicated: bool,
    pub data: Or<Box<dyn Any>, NonNull<u8>>,
    /* private fields */
}
Expand description

A descriptor for registration of a resource.

Normally, resource is owned by an ECS instance, but type-erased raw pointer can also be considered as a resource. In that case, clients must guarantee safety about the pointer. ResourceDesc::with_owned and ResourceDesc::with_ptr are methods about the ownership.

Fields§

§dedicated: bool§data: Or<Box<dyn Any>, NonNull<u8>>

Implementations§

Source§

impl ResourceDesc

Source

pub fn new() -> Self

Creates a new empty ResourceDesc.

§Examples
use my_ecs::prelude::ResourceDesc;

let desc = ResourceDesc::new();
Source

pub fn with_dedicated(self, is_dedicated: bool) -> Self

Sets whether the resource is dedicated to the descriptor then returns the result.

Dedicated resource is only accessable from main worker for now.

§Examples
use my_ecs::prelude::ResourceDesc;

let desc = ResourceDesc::new().with_dedicated(true);
Source

pub fn with_owned<R: Resource>(self, data: R) -> Self

Sets the given owned resource to the descriptor then returns the result.

§Examples
use my_ecs::prelude::*;

#[derive(Resource)] struct R(i32);

let desc = ResourceDesc::new().with_owned(R(0));
Source

pub unsafe fn with_ptr<R: Resource>(self, data: *mut R) -> Self

Sets the given pointer as a resource to the descriptor then returns the result.

§Safety

After registration the descriptor to an ECS instance, owner of the data must not access the data while the ECS instance is running because the ECS instance may read or write something on the data.

§Examples
use my_ecs::prelude::*;

#[derive(Resource)] struct R(i32);

let mut r = R(0);
let desc = unsafe { ResourceDesc::new().with_ptr(&mut r as *mut R) };

Trait Implementations§

Source§

impl Debug for ResourceDesc

Source§

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

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

impl Default for ResourceDesc

Source§

fn default() -> Self

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

impl<R: Resource> From<R> for ResourceDesc

Source§

fn from(value: R) -> Self

Converts to this type from the input type.

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.