rustc_type_ir/
generic_arg.rs1use 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> {}