rustc_type_ir/
generic_arg.rs

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