aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src/context
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-01-11 00:01:47 -0600
committermat <github@matdoes.dev>2022-01-11 00:01:47 -0600
commitcc4fe62fc82842e0bde628437a45d55c6a82f1f3 (patch)
tree9248cb03406681f81d6d29a0878220fbe1e836e2 /azalea-brigadier/src/context
parent60b129b3a62b66dd389d1775892405fe735b9540 (diff)
downloadazalea-drasl-cc4fe62fc82842e0bde628437a45d55c6a82f1f3.tar.xz
adfsfasdfaSDQAWERTERYTUYghyubnjnrdfxcv etgvbhy0ujn-
Diffstat (limited to 'azalea-brigadier/src/context')
-rw-r--r--azalea-brigadier/src/context/command_context.rs11
-rw-r--r--azalea-brigadier/src/context/command_context_builder.rs2
-rw-r--r--azalea-brigadier/src/context/parsed_argument.rs2
-rw-r--r--azalea-brigadier/src/context/parsed_command_node.rs9
-rw-r--r--azalea-brigadier/src/context/string_range.rs2
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,