@@ -21,20 +21,21 @@ pub use nonterminal_kind::NonterminalKind;
2121pub use rewriter:: BaseRewriter ;
2222pub use terminal_kind:: TerminalKind ;
2323
24- // These derives are because default #[derive(...)] on a generic type implements only the trait
25- // with default bounds also implied for the generic types as well, i.e.
26- //
27- // #[derive(Clone)] // expands to `impl<T: Clone> Clone for MyOption<T> { ... }` (notice the `T: Clone`)
28- // struct MyOption<T>(Option<T>);
29- //
30- // This assumes that the underlying data type uses this internally, however it's only used as a
31- // type container/marker.
32- //
33- // A slightly more "correct" approach would be to implement the traits while skipping the bounds for
34- // the type marker, however this can be more noisy
35- #[ allow( missing_docs) ]
24+ /// The base type of all nonterminals, terminals, and edges.
3625#[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize ) ]
37- pub enum KindTypes { }
26+ pub enum KindTypes {
27+ // These derives are because default #[derive(...)] on a generic type implements only the trait
28+ // with default bounds also implied for the generic types as well, i.e.
29+ //
30+ // #[derive(Clone)] // expands to `impl<T: Clone> Clone for MyOption<T> { ... }` (notice the `T: Clone`)
31+ // struct MyOption<T>(Option<T>);
32+ //
33+ // This assumes that the underlying data type uses this internally, however it's only used as a
34+ // type container/marker.
35+ //
36+ // A slightly more "correct" approach would be to implement the traits while skipping the bounds for
37+ // the type marker, however this can be more noisy
38+ }
3839
3940impl metaslang_cst:: kinds:: KindTypes for KindTypes {
4041 type NonterminalKind = NonterminalKind ;
0 commit comments