diff --git a/Changelog.md b/Changelog.md
index 2a1db12..a27b03a 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,6 +1,7 @@
 # Unreleased
 
 - Add implementations for `fmt::Pointer`, `PartialEq`, `Eq`, `PartialOrd`, `Ord` and `Hash`.
+- Update `very_unstable` feature to latest nightly
 
 # 0.5.1 – 2023-06-24
 
diff --git a/src/lib.rs b/src/lib.rs
index 4734945..eb4ee4f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -38,6 +38,7 @@
 #![cfg_attr(feature = "very_unstable", feature(const_trait_impl))]
 #![cfg_attr(feature = "very_unstable", feature(unboxed_closures))]
 #![cfg_attr(feature = "very_unstable", feature(fn_traits))]
+#![cfg_attr(feature = "very_unstable", feature(effects))]
 #![warn(missing_docs)]
 #![deny(unsafe_op_in_unsafe_fn)]
 
diff --git a/src/volatile_ptr/very_unstable.rs b/src/volatile_ptr/very_unstable.rs
index 3935928..2f48c91 100644
--- a/src/volatile_ptr/very_unstable.rs
+++ b/src/volatile_ptr/very_unstable.rs
@@ -16,7 +16,7 @@ where
     /// The safety requirements of [`Self::map`] apply to this method too.
     pub const unsafe fn map_const<F, U>(self, f: F) -> VolatilePtr<'a, U, A>
     where
-        F: ~const FnOnce(NonNull<T>) -> NonNull<U>,
+        F: FnOnce(NonNull<T>) -> NonNull<U>,
         U: ?Sized,
     {
         unsafe { VolatilePtr::new_generic(f(self.pointer)) }
@@ -36,7 +36,7 @@ impl<'a, T, A> VolatilePtr<'a, [T], A> {
         struct Mapper {
             index: usize,
         }
-        impl<T> const FnOnce<(NonNull<[T]>,)> for Mapper {
+        impl<T> FnOnce<(NonNull<[T]>,)> for Mapper {
             type Output = NonNull<T>;
 
             extern "rust-call" fn call_once(self, (slice,): (NonNull<[T]>,)) -> Self::Output {