Struct valence_command::scopes::CommandScopeRegistry
source · pub struct CommandScopeRegistry { /* private fields */ }
Expand description
Store the scope graph and provide methods for querying it.
Implementations§
source§impl CommandScopeRegistry
impl CommandScopeRegistry
sourcepub fn add_scope<S: Into<String>>(&mut self, scope: S)
pub fn add_scope<S: Into<String>>(&mut self, scope: S)
Add a scope to the registry.
§Example
use valence_command::CommandScopeRegistry;
let mut registry = CommandScopeRegistry::new();
// creates two nodes. "valence" and "command" with an edge from "valence" to "command"
registry.add_scope("valence.command");
// creates one node. "valence.command.tp" with an edge from "valence.command" to
// "valence.command.tp"
registry.add_scope("valence.command.tp");
// the root node is always present
assert_eq!(registry.scope_count(), 4);
sourcepub fn remove_scope(&mut self, scope: &str)
pub fn remove_scope(&mut self, scope: &str)
Remove a scope from the registry.
§Example
use valence_command::CommandScopeRegistry;
let mut registry = CommandScopeRegistry::new();
registry.add_scope("valence.command");
registry.add_scope("valence.command.tp");
assert_eq!(registry.scope_count(), 4);
registry.remove_scope("valence.command.tp");
assert_eq!(registry.scope_count(), 3);
sourcepub fn grants(&self, scope: &str, other: &str) -> bool
pub fn grants(&self, scope: &str, other: &str) -> bool
Check if a scope grants another scope.
§Example
use valence_command::CommandScopeRegistry;
let mut registry = CommandScopeRegistry::new();
registry.add_scope("valence.command");
registry.add_scope("valence.command.tp");
assert!(registry.grants("valence.command", "valence.command.tp")); // command implies tp
assert!(!registry.grants("valence.command.tp", "valence.command")); // tp does not imply command
sourcepub fn any_grants(&self, scopes: &Vec<&str>, other: &str) -> bool
pub fn any_grants(&self, scopes: &Vec<&str>, other: &str) -> bool
do any of the scopes in the list grant the other scope?
§Example
use valence_command::CommandScopeRegistry;
let mut registry = CommandScopeRegistry::new();
registry.add_scope("valence.command");
registry.add_scope("valence.command.tp");
registry.add_scope("valence.admin");
assert!(registry.any_grants(
&vec!["valence.admin", "valence.command"],
"valence.command.tp"
));
sourcepub fn link(&mut self, scope: &str, other: &str)
pub fn link(&mut self, scope: &str, other: &str)
Create a link between two scopes so that one implies the other. It will add them if they don’t exist.
§Example
use valence_command::CommandScopeRegistry;
let mut registry = CommandScopeRegistry::new();
registry.add_scope("valence.command.tp");
registry.link("valence.admin", "valence.command");
assert!(registry.grants("valence.admin", "valence.command"));
assert!(registry.grants("valence.admin", "valence.command.tp"));
sourcepub fn scope_count(&self) -> usize
pub fn scope_count(&self) -> usize
Get the number of scopes in the registry.
Trait Implementations§
source§impl Clone for CommandScopeRegistry
impl Clone for CommandScopeRegistry
source§fn clone(&self) -> CommandScopeRegistry
fn clone(&self) -> CommandScopeRegistry
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for CommandScopeRegistry
impl Debug for CommandScopeRegistry
source§impl Default for CommandScopeRegistry
impl Default for CommandScopeRegistry
impl Resource for CommandScopeRegistry
Auto Trait Implementations§
impl Freeze for CommandScopeRegistry
impl RefUnwindSafe for CommandScopeRegistry
impl Send for CommandScopeRegistry
impl Sync for CommandScopeRegistry
impl Unpin for CommandScopeRegistry
impl UnwindSafe for CommandScopeRegistry
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates
Self
using data from the given [World
].