Resource

Trait Resource 

Source
pub trait Resource {
    // Required methods
    unsafe fn clone_state(&self) -> Self;
    unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool);
}
Expand description

A resource is a type that can be moved inside or outside of a guard.

Required Methods§

Source

unsafe fn clone_state(&self) -> Self

Clone the resource state. The function is unsafe, because only one instance of the resource state should exist at a time. If there are multiple instances of the resource state, we need to make sure that their states are synchronized. If one instance is dropped and cleans up the resource, the other instances should become invalid.

Source

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Set weather the resource should be cleaned up when it is dropped. If have multiple states of the same resource, we need to make sure that only one of them is set to clean up the resource.

This method is unsafe, because it is possible to disable the cleanup of a resource, which brings the resource into an invalid state.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Resource for ()

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, _cleanup_enabled: bool)

Source§

impl<A: Resource> Resource for (A,)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource> Resource for (A, B)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource> Resource for (A, B, C)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource> Resource for (A, B, C, D)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource> Resource for (A, B, C, D, E)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource> Resource for (A, B, C, D, E, F)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource> Resource for (A, B, C, D, E, F, G)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource, H: Resource> Resource for (A, B, C, D, E, F, G, H)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource, H: Resource, I: Resource> Resource for (A, B, C, D, E, F, G, H, I)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource, H: Resource, I: Resource, J: Resource> Resource for (A, B, C, D, E, F, G, H, I, J)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource, H: Resource, I: Resource, J: Resource, K: Resource> Resource for (A, B, C, D, E, F, G, H, I, J, K)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Source§

impl<A: Resource, B: Resource, C: Resource, D: Resource, E: Resource, F: Resource, G: Resource, H: Resource, I: Resource, J: Resource, K: Resource, L: Resource> Resource for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

unsafe fn clone_state(&self) -> Self

Source§

unsafe fn set_cleanup_enabled(&mut self, cleanup_enabled: bool)

Implementors§