diff options
| author | Michael Goulet <michael@errs.io> | 2023-12-14 19:10:03 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-12-14 19:10:03 +0000 |
| commit | 742f193ef871aff89a5d818cdb1087f41c66f75d (patch) | |
| tree | 78bdf181e975814988653361c64aeb3fc9f4ebeb /compiler/rustc_middle/src/middle | |
| parent | 9f0849f9e059648ce18b996110276306863c5a6d (diff) | |
| download | rust-742f193ef871aff89a5d818cdb1087f41c66f75d.tar.gz rust-742f193ef871aff89a5d818cdb1087f41c66f75d.zip | |
Move special methods from ClosureKind back into rustc
Diffstat (limited to 'compiler/rustc_middle/src/middle')
| -rw-r--r-- | compiler/rustc_middle/src/middle/lang_items.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/middle/lang_items.rs b/compiler/rustc_middle/src/middle/lang_items.rs index 9a633e04ce7..2899e629d79 100644 --- a/compiler/rustc_middle/src/middle/lang_items.rs +++ b/compiler/rustc_middle/src/middle/lang_items.rs @@ -36,6 +36,17 @@ impl<'tcx> TyCtxt<'tcx> { } } + /// Given a [`ty::ClosureKind`], get the [`DefId`] of its corresponding `Fn`-family + /// trait, if it is defined. + pub fn fn_trait_kind_to_def_id(self, kind: ty::ClosureKind) -> Option<DefId> { + let items = self.lang_items(); + match kind { + ty::ClosureKind::Fn => items.fn_trait(), + ty::ClosureKind::FnMut => items.fn_mut_trait(), + ty::ClosureKind::FnOnce => items.fn_once_trait(), + } + } + /// Returns `true` if `id` is a `DefId` of [`Fn`], [`FnMut`] or [`FnOnce`] traits. pub fn is_fn_trait(self, id: DefId) -> bool { self.fn_trait_kind_from_def_id(id).is_some() |
