Skip to content

Commit 6e7a87c

Browse files
committed
merge Mark and Unmark traits
1 parent 356107e commit 6e7a87c

1 file changed

Lines changed: 6 additions & 25 deletions

File tree

  • library/proc_macro/src/bridge

library/proc_macro/src/bridge/mod.rs

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,6 @@ with_api!(self, declare_tags);
155155
trait Mark {
156156
type Unmarked;
157157
fn mark(unmarked: Self::Unmarked) -> Self;
158-
}
159-
160-
/// Unwrap types wrapped by `Mark::mark` (see `Mark` for details).
161-
trait Unmark {
162-
type Unmarked;
163158
fn unmark(self) -> Self::Unmarked;
164159
}
165160

@@ -174,15 +169,15 @@ impl<T, M> Mark for Marked<T, M> {
174169
fn mark(unmarked: Self::Unmarked) -> Self {
175170
Marked { value: unmarked, _marker: marker::PhantomData }
176171
}
177-
}
178-
impl<T, M> Unmark for Marked<T, M> {
179-
type Unmarked = T;
180172
fn unmark(self) -> Self::Unmarked {
181173
self.value
182174
}
183175
}
184-
impl<'a, T, M> Unmark for &'a Marked<T, M> {
176+
impl<'a, T, M> Mark for &'a Marked<T, M> {
185177
type Unmarked = &'a T;
178+
fn mark(_: Self::Unmarked) -> Self {
179+
unreachable!()
180+
}
186181
fn unmark(self) -> Self::Unmarked {
187182
&self.value
188183
}
@@ -194,9 +189,6 @@ impl<T: Mark> Mark for Vec<T> {
194189
// Should be a no-op due to std's in-place collect optimizations.
195190
unmarked.into_iter().map(T::mark).collect()
196191
}
197-
}
198-
impl<T: Unmark> Unmark for Vec<T> {
199-
type Unmarked = Vec<T::Unmarked>;
200192
fn unmark(self) -> Self::Unmarked {
201193
// Should be a no-op due to std's in-place collect optimizations.
202194
self.into_iter().map(T::unmark).collect()
@@ -211,9 +203,6 @@ macro_rules! mark_noop {
211203
fn mark(unmarked: Self::Unmarked) -> Self {
212204
unmarked
213205
}
214-
}
215-
impl Unmark for $ty {
216-
type Unmarked = Self;
217206
fn unmark(self) -> Self::Unmarked {
218207
self
219208
}
@@ -294,13 +283,9 @@ macro_rules! mark_compound {
294283
$($field: Mark::mark(unmarked.$field)),*
295284
}
296285
}
297-
}
298-
299-
impl<$($T: Unmark),+> Unmark for $name <$($T),+> {
300-
type Unmarked = $name <$($T::Unmarked),+>;
301286
fn unmark(self) -> Self::Unmarked {
302287
$name {
303-
$($field: Unmark::unmark(self.$field)),*
288+
$($field: Mark::unmark(self.$field)),*
304289
}
305290
}
306291
}
@@ -315,14 +300,10 @@ macro_rules! mark_compound {
315300
})*
316301
}
317302
}
318-
}
319-
320-
impl<$($T: Unmark),+> Unmark for $name <$($T),+> {
321-
type Unmarked = $name <$($T::Unmarked),+>;
322303
fn unmark(self) -> Self::Unmarked {
323304
match self {
324305
$($name::$variant $(($field))? => {
325-
$name::$variant $((Unmark::unmark($field)))?
306+
$name::$variant $((Mark::unmark($field)))?
326307
})*
327308
}
328309
}

0 commit comments

Comments
 (0)