From 2467cd6272c13b618ad53c5dadff5b8c8e7885bf Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 4 Aug 2020 13:48:07 +0200 Subject: =?UTF-8?q?Refactor=20function=20parsing=20=E2=99=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/syntax/tree.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/syntax/tree.rs') diff --git a/src/syntax/tree.rs b/src/syntax/tree.rs index 73734d28..4ce39cd4 100644 --- a/src/syntax/tree.rs +++ b/src/syntax/tree.rs @@ -31,6 +31,13 @@ pub enum SyntaxNode { Dyn(Box), } +impl SyntaxNode { + /// Create a `Dyn` variant from an unboxed dynamic node. + pub fn boxed(node: T) -> SyntaxNode { + SyntaxNode::Dyn(Box::new(node)) + } +} + impl PartialEq for SyntaxNode { fn eq(&self, other: &SyntaxNode) -> bool { use SyntaxNode::*; @@ -65,10 +72,7 @@ pub trait DynamicNode: Debug + Layout { impl dyn DynamicNode { /// Downcast this dynamic node to a concrete node. - pub fn downcast(&self) -> Option<&T> - where - T: DynamicNode + 'static, - { + pub fn downcast(&self) -> Option<&T> { self.as_any().downcast_ref::() } } -- cgit v1.2.3