diff options
| author | mat <github@matdoes.dev> | 2022-01-11 00:01:47 -0600 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-01-11 00:01:47 -0600 |
| commit | cc4fe62fc82842e0bde628437a45d55c6a82f1f3 (patch) | |
| tree | 9248cb03406681f81d6d29a0878220fbe1e836e2 /azalea-brigadier/src/context | |
| parent | 60b129b3a62b66dd389d1775892405fe735b9540 (diff) | |
| download | azalea-drasl-cc4fe62fc82842e0bde628437a45d55c6a82f1f3.tar.xz | |
adfsfasdfaSDQAWERTERYTUYghyubnjnrdfxcv etgvbhy0ujn-
Diffstat (limited to 'azalea-brigadier/src/context')
5 files changed, 14 insertions, 12 deletions
diff --git a/azalea-brigadier/src/context/command_context.rs b/azalea-brigadier/src/context/command_context.rs index 36741906..68144a40 100644 --- a/azalea-brigadier/src/context/command_context.rs +++ b/azalea-brigadier/src/context/command_context.rs @@ -14,17 +14,20 @@ pub struct CommandContext<'a, S, T> { command: &'a dyn Command<S, T>, arguments: HashMap<String, ParsedArgument<T>>, root_node: &'a dyn CommandNode<S, T>, - nodes: Vec<ParsedCommandNode<'a, S, T>>, + nodes: Vec<ParsedCommandNode<S, T>>, range: StringRange, - child: Option<CommandContext<'a, S, T>>, + child: Option<&'a CommandContext<'a, S, T>>, modifier: Option<&'a dyn RedirectModifier<S, T>>, forks: bool, } -impl<S, T> CommandContext<'_, S, T> { +impl<S, T> CommandContext<'_, S, T> +where + S: PartialEq, +{ pub fn clone_for(&self, source: S) -> Self { if self.source == source { - return self.clone(); + return *self; } Self { source, diff --git a/azalea-brigadier/src/context/command_context_builder.rs b/azalea-brigadier/src/context/command_context_builder.rs index 878d7692..88e26343 100644 --- a/azalea-brigadier/src/context/command_context_builder.rs +++ b/azalea-brigadier/src/context/command_context_builder.rs @@ -28,7 +28,7 @@ use super::{ pub struct CommandContextBuilder<'a, S, T> { arguments: HashMap<String, ParsedArgument<T>>, root_node: &'a dyn CommandNode<S, T>, - nodes: Vec<ParsedCommandNode<'a, S, T>>, + nodes: Vec<ParsedCommandNode<S, T>>, dispatcher: CommandDispatcher<'a, S, T>, source: S, command: Box<dyn Command<S, T>>, diff --git a/azalea-brigadier/src/context/parsed_argument.rs b/azalea-brigadier/src/context/parsed_argument.rs index 75c07784..447a1223 100644 --- a/azalea-brigadier/src/context/parsed_argument.rs +++ b/azalea-brigadier/src/context/parsed_argument.rs @@ -1,6 +1,6 @@ use super::string_range::StringRange; -#[derive(PartialEq, Eq, Hash)] +#[derive(PartialEq, Eq, Hash, Clone)] pub struct ParsedArgument<T> { range: StringRange, // T is an item in an enum diff --git a/azalea-brigadier/src/context/parsed_command_node.rs b/azalea-brigadier/src/context/parsed_command_node.rs index a006aa4b..14168a06 100644 --- a/azalea-brigadier/src/context/parsed_command_node.rs +++ b/azalea-brigadier/src/context/parsed_command_node.rs @@ -1,14 +1,13 @@ use super::string_range::StringRange; use crate::tree::command_node::CommandNode; -#[derive(Hash, PartialEq, Eq, Debug, Clone)] -pub struct ParsedCommandNode<'a, S, T> { - node: &'a dyn CommandNode<S, T>, +pub struct ParsedCommandNode<S, T> { + node: Box<dyn CommandNode<S, T>>, range: StringRange, } -impl<S, T> ParsedCommandNode<'_, S, T> { - fn new(node: &dyn CommandNode<S, T>, range: StringRange) -> Self { +impl<S, T> ParsedCommandNode<S, T> { + fn new(node: dyn CommandNode<S, T>, range: StringRange) -> Self { Self { node, range } } diff --git a/azalea-brigadier/src/context/string_range.rs b/azalea-brigadier/src/context/string_range.rs index d775ab68..87098a1a 100644 --- a/azalea-brigadier/src/context/string_range.rs +++ b/azalea-brigadier/src/context/string_range.rs @@ -1,6 +1,6 @@ use std::cmp; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct StringRange { start: usize, end: usize, |
