rustc_type_ir/
generic_arg.rs

1use derive_where::derive_where;
2#[cfg(feature = "nightly")]
3use rustc_macros::{Decodable_NoContext, Encodable_NoContext, HashStable_NoContext};
4use rustc_type_ir_macros::GenericTypeVisitable;
5
6use crate::Interner;
7
8#[derive_where(Clone, Copy, PartialEq, Debug; I: Interner)]
9#[derive(GenericTypeVisitable)]
10#[cfg_attr(
11    feature = "nightly",
12    derive(Decodable_NoContext, Encodable_NoContext, HashStable_NoContext)
13)]
14pub enum GenericArgKind<I: Interner> {
15    Lifetime(I::Region),
16    Type(I::Ty),
17    Const(I::Const),
18}
19
20impl<I: Interner> Eq for GenericArgKind<I> {}
21
22#[derive_where(Clone, Copy, PartialEq, Debug; I: Interner)]
23#[derive(GenericTypeVisitable)]
24#[cfg_attr(
25    feature = "nightly",
26    derive(Decodable_NoContext, Encodable_NoContext, HashStable_NoContext)
27)]
28pub enum TermKind<I: Interner> {
29    Ty(I::Ty),
30    Const(I::Const),
31}
32
33impl<I: Interner> Eq for TermKind<I> {}