diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-08-04 13:48:07 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-08-04 13:48:07 +0200 |
| commit | 2467cd6272c13b618ad53c5dadff5b8c8e7885bf (patch) | |
| tree | 6ad13ec06a04997564efc514b40daa3fb65233e2 /src/syntax/tree.rs | |
| parent | ed4fdcb0ada909f1cc3d7436334e253f0ec14d55 (diff) | |
Refactor function parsing ♻
Diffstat (limited to 'src/syntax/tree.rs')
| -rw-r--r-- | src/syntax/tree.rs | 12 |
1 files changed, 8 insertions, 4 deletions
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<dyn DynamicNode>), } +impl SyntaxNode { + /// Create a `Dyn` variant from an unboxed dynamic node. + pub fn boxed<T: DynamicNode + 'static>(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<T>(&self) -> Option<&T> - where - T: DynamicNode + 'static, - { + pub fn downcast<T: DynamicNode + 'static>(&self) -> Option<&T> { self.as_any().downcast_ref::<T>() } } |
