Struct kernel::storage_permissions::StoragePermissions

source ·
pub struct StoragePermissions(/* private fields */);
Expand description

Permissions for accessing persistent storage.

This is a general type capable of representing permissions in different ways. Users of storage permissions do not need to understand the different ways permissions are stored internally. Instead, layers that need to enforce permissions only use the following API:

fn StoragePermissions::check_read_permission(&self, stored_id: u32) -> bool;
fn StoragePermissions::check_modify_permission(&self, stored_id: u32) -> bool;
fn StoragePermissions::get_write_id(&self) -> Option<u32>;

Implementations§

source§

impl StoragePermissions

source

pub fn new_self_only( short_id_fixed: NonZeroU32, _cap: &dyn ApplicationStorageCapability, ) -> Self

source

pub fn new_fixed_size( app_id: NonZeroU32, write_permission: bool, read_modify_self: bool, read_count: usize, read_permissions: [u32; 8], modify_count: usize, modify_permissions: [u32; 8], _cap: &dyn ApplicationStorageCapability, ) -> Self

source

pub fn new_listed( app_id: NonZeroU32, write_permission: bool, read_modify_self: bool, read_permissions: &'static [u32], modify_permissions: &'static [u32], _cap: &dyn ApplicationStorageCapability, ) -> Self

source

pub fn new_kernel(_cap: &dyn KerneluserStorageCapability) -> Self

source

pub fn new_null() -> Self

source

pub fn check_read_permission(&self, stored_id: u32) -> bool

Check if these storage permissions grant read access to the stored state marked with identifier stored_id.

source

pub fn check_modify_permission(&self, stored_id: u32) -> bool

Check if these storage permissions grant modify access to the stored state marked with identifier stored_id.

source

pub fn get_write_id(&self) -> Option<u32>

Retrieve the identifier to use when storing state, if the application has permission to write. Returns None if the application cannot write.

Trait Implementations§

source§

impl Clone for StoragePermissions

source§

fn clone(&self) -> StoragePermissions

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Copy for StoragePermissions

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> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.