New generics

This commit is contained in:
2026-05-17 04:35:00 +02:00
parent 4742fbebf7
commit 9b632fcc0e
4 changed files with 17 additions and 6 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ pub enum Prefix {
Ref, Ref,
RefMut, RefMut,
Deref, Deref,
New, New(Option<Generics>),
Not, Not,
Neg, Neg,
RangeInclusive, RangeInclusive,
+1 -1
View File
@@ -515,7 +515,7 @@ postfix = {
deref_px = { "*" } deref_px = { "*" }
mut_ref_px = { "&" ~ mutable } mut_ref_px = { "&" ~ mutable }
ref_px = { "&" } ref_px = { "&" }
new_px = { "new" } new_px = { "new" ~ generics? }
not_px = { "!" } not_px = { "!" }
neg_px = { "-" } neg_px = { "-" }
range_start_inc_px = { "..=" } range_start_inc_px = { "..=" }
+6 -1
View File
@@ -134,7 +134,12 @@ impl<'a> TryFrom<pest::iterators::Pair<'a, Rule>> for Prefix {
Rule::deref_px => Self::Deref, Rule::deref_px => Self::Deref,
Rule::mut_ref_px => Self::RefMut, Rule::mut_ref_px => Self::RefMut,
Rule::ref_px => Self::Ref, Rule::ref_px => Self::Ref,
Rule::new_px => Self::New, Rule::new_px => Self::New(
pair.into_inner()
.next()
.map(|v| v.try_into().get())
.transpose()?,
),
Rule::not_px => Self::Not, Rule::not_px => Self::Not,
Rule::neg_px => Self::Neg, Rule::neg_px => Self::Neg,
Rule::range_start_inc_px => Self::RangeInclusive, Rule::range_start_inc_px => Self::RangeInclusive,
+9 -3
View File
@@ -204,7 +204,7 @@ impl GetRust for Prefix {
Self::Ref => "&", Self::Ref => "&",
Self::RefMut => "&mut ", Self::RefMut => "&mut ",
Self::Not => "!", Self::Not => "!",
Self::New => "", Self::New(_) => "",
Self::Neg => "-", Self::Neg => "-",
Self::RangeInclusive => "..=", Self::RangeInclusive => "..=",
Self::RangeExclusive => "..", Self::RangeExclusive => "..",
@@ -249,8 +249,14 @@ impl GetRust for Option<&Vec<Prefix>> {
.iter() .iter()
.last() .last()
.map(|p| match p { .map(|p| match p {
Prefix::New => "::new", Prefix::New(generics) => format!(
_ => "", "::new{}",
generics
.as_ref()
.map(|v| format!("::{}", v.get_rust()))
.unwrap_or_default(),
),
_ => String::new(),
}) })
.unwrap_or_default() .unwrap_or_default()
.to_string() .to_string()