]> git.nega.tv - josh/narcissus/commitdiff
Add `Upcast` trait for casting to super-trait
authorJoshua Simmons <josh@nega.tv>
Sat, 19 Nov 2022 23:20:39 +0000 (00:20 +0100)
committerJoshua Simmons <josh@nega.tv>
Sat, 19 Nov 2022 23:20:39 +0000 (00:20 +0100)
narcissus-core/src/lib.rs

index 2c09509395309d987ed08dd61a4845bc6d378941..cb63fdd03fe90e7213f28accccba53215746d259 100644 (file)
@@ -264,6 +264,10 @@ pub fn zeroed_box<T>() -> Box<MaybeUninit<T>> {
 /// Negative traits aren't stable yet, so use a dummy PhantomData marker to implement !Send
 pub type PhantomUnsend = std::marker::PhantomData<*mut ()>;
 
+pub trait Upcast<T: ?Sized> {
+    fn upcast(&self) -> &T;
+}
+
 #[must_use]
 pub fn align_offset(x: usize, align: usize) -> usize {
     debug_assert!(align.is_power_of_two());