diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..f819f7c4
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [JohnTitor]
diff --git a/.github/workflows/ci-post-merge.yml b/.github/workflows/ci-post-merge.yml
index ee64cf64..02610dfc 100644
--- a/.github/workflows/ci-post-merge.yml
+++ b/.github/workflows/ci-post-merge.yml
@@ -64,7 +64,7 @@ jobs:
toolchain: ${{ matrix.version }}
- name: Install just, cargo-hack, cargo-nextest, cargo-ci-cache-clean
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: just,cargo-hack,cargo-nextest,cargo-ci-cache-clean
@@ -121,7 +121,7 @@ jobs:
toolchain: nightly
- name: Install cargo-hack & cargo-minimal-versions
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: cargo-hack,cargo-minimal-versions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5e54585f..e418306d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -73,7 +73,7 @@ jobs:
toolchain: ${{ matrix.version.version }}
- name: Install just, cargo-hack, cargo-nextest, cargo-ci-cache-clean
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: just,cargo-hack,cargo-nextest,cargo-ci-cache-clean
@@ -125,7 +125,7 @@ jobs:
toolchain: nightly
- name: Install just
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: just
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index d4f0c818..2f10ace4 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -23,7 +23,7 @@ jobs:
components: llvm-tools-preview
- name: Install cargo-llvm-cov
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: cargo-llvm-cov
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 0b401e05..23f14979 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -56,12 +56,12 @@ jobs:
toolchain: ${{ vars.RUST_VERSION_EXTERNAL_TYPES }}
- name: Install just
- uses: taiki-e/install-action@v2.65.13
+ uses: taiki-e/install-action@v2.67.13
with:
tool: just
- name: Install cargo-check-external-types
- uses: taiki-e/cache-cargo-install-action@v3.0.0
+ uses: taiki-e/cache-cargo-install-action@v3.0.1
with:
tool: cargo-check-external-types
diff --git a/Cargo.lock b/Cargo.lock
index 25830628..5951d194 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -172,28 +172,6 @@ version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
-[[package]]
-name = "async-stream"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
-dependencies = [
- "async-stream-impl",
- "futures-core",
- "pin-project-lite",
-]
-
-[[package]]
-name = "async-stream-impl"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "async-trait"
version = "0.1.89"
@@ -1475,9 +1453,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.104"
+version = "1.0.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"
+checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
dependencies = [
"unicode-ident",
]
@@ -1936,9 +1914,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.148"
+version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
dependencies = [
"itoa",
"memchr",
@@ -2048,9 +2026,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
-version = "2.0.111"
+version = "2.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
+checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
dependencies = [
"proc-macro2",
"quote",
@@ -2309,12 +2287,10 @@ dependencies = [
[[package]]
name = "tokio-test"
-version = "0.4.4"
+version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7"
+checksum = "3f6d24790a10a7af737693a3e8f1d03faef7e6ca0cc99aae5066f533766de545"
dependencies = [
- "async-stream",
- "bytes",
"futures-core",
"tokio",
"tokio-stream",
@@ -2442,9 +2418,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.20"
+version = "0.3.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
+checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
dependencies = [
"matchers",
"nu-ansi-term",
diff --git a/Cargo.toml b/Cargo.toml
index 74792da7..f38ba50f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,7 +19,7 @@ homepage = "https://actix.rs"
repository = "https://github.com/actix/actix-net"
license = "MIT OR Apache-2.0"
edition = "2021"
-rust-version = "1.76"
+rust-version = "1.88"
[patch.crates-io]
actix-codec = { path = "actix-codec" }
diff --git a/README.md b/README.md
index 3193bd09..742492f6 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ See example folders for [`actix-server`](./actix-server/examples) and [`actix-tl
## MSRV
-Crates in this repo currently have a Minimum Supported Rust Version (MSRV) of 1.65. As a policy, we permit MSRV increases in non-breaking releases.
+Crates in this repo currently have a Minimum Supported Rust Version (MSRV) of 1.88. As a policy, we permit MSRV increases in non-breaking releases.
## License
diff --git a/actix-codec/CHANGES.md b/actix-codec/CHANGES.md
index f50ded24..2cfe60d2 100644
--- a/actix-codec/CHANGES.md
+++ b/actix-codec/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 0.5.2
diff --git a/actix-macros/CHANGES.md b/actix-macros/CHANGES.md
index 3900129e..146f69f7 100644
--- a/actix-macros/CHANGES.md
+++ b/actix-macros/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 0.2.4
diff --git a/actix-rt/CHANGES.md b/actix-rt/CHANGES.md
index b651ac7a..6ba3532b 100644
--- a/actix-rt/CHANGES.md
+++ b/actix-rt/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 2.11.0
diff --git a/actix-rt/README.md b/actix-rt/README.md
index f1618fe6..31037720 100644
--- a/actix-rt/README.md
+++ b/actix-rt/README.md
@@ -4,7 +4,7 @@
[](https://crates.io/crates/actix-rt)
[](https://docs.rs/actix-rt/2.11.0)
-[](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html)
+[](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html)

[](https://deps.rs/crate/actix-rt/2.11.0)
diff --git a/actix-server/CHANGES.md b/actix-server/CHANGES.md
index 729953f0..aff4c8da 100644
--- a/actix-server/CHANGES.md
+++ b/actix-server/CHANGES.md
@@ -2,7 +2,8 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
+- internal: Use `core::future::{ready, Ready}` instead of actix-utils'
## 2.6.0
diff --git a/actix-server/README.md b/actix-server/README.md
index c51e1864..f7bcda42 100644
--- a/actix-server/README.md
+++ b/actix-server/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/actix-server)
[](https://docs.rs/actix-server/2.6.0)
-[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
+[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)

[](https://deps.rs/crate/actix-server/2.6.0)
diff --git a/actix-server/src/join_all.rs b/actix-server/src/join_all.rs
index e9bd8949..b7a33c8b 100644
--- a/actix-server/src/join_all.rs
+++ b/actix-server/src/join_all.rs
@@ -63,7 +63,7 @@ impl Future for JoinAll {
#[cfg(test)]
mod test {
- use actix_utils::future::ready;
+ use core::future::ready;
use super::*;
diff --git a/actix-server/src/service.rs b/actix-server/src/service.rs
index eba1470e..2de89702 100644
--- a/actix-server/src/service.rs
+++ b/actix-server/src/service.rs
@@ -1,3 +1,4 @@
+use core::future::{ready, Ready};
use std::{
marker::PhantomData,
net::SocketAddr,
@@ -5,7 +6,6 @@ use std::{
};
use actix_service::{Service, ServiceFactory as BaseServiceFactory};
-use actix_utils::future::{ready, Ready};
use futures_core::future::LocalBoxFuture;
use tracing::error;
diff --git a/actix-service/CHANGES.md b/actix-service/CHANGES.md
index 7a31a56f..35ded6aa 100644
--- a/actix-service/CHANGES.md
+++ b/actix-service/CHANGES.md
@@ -2,7 +2,8 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
+- internal: Use `core::future::{ready, Ready}` instead of hand-crafted one
## 2.0.3
diff --git a/actix-service/README.md b/actix-service/README.md
index 0af08a83..7a31fdc6 100644
--- a/actix-service/README.md
+++ b/actix-service/README.md
@@ -4,7 +4,7 @@
[](https://crates.io/crates/actix-service)
[](https://docs.rs/actix-service/2.0.3)
-[](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html)
+[](https://blog.rust-lang.org/2020/03/12/Rust-1.46.html)

[](https://deps.rs/crate/actix-service/2.0.3)

diff --git a/actix-service/src/and_then.rs b/actix-service/src/and_then.rs
index 28a17044..e453f7be 100644
--- a/actix-service/src/and_then.rs
+++ b/actix-service/src/and_then.rs
@@ -246,15 +246,16 @@ mod tests {
use alloc::rc::Rc;
use core::{
cell::Cell,
+ future::{ready, Ready},
task::{Context, Poll},
};
use futures_util::future::lazy;
use crate::{
- fn_factory, ok,
+ fn_factory,
pipeline::{pipeline, pipeline_factory},
- ready, Ready, Service, ServiceFactory,
+ Service, ServiceFactory,
};
struct Srv1(Rc>);
@@ -270,7 +271,7 @@ mod tests {
}
fn call(&self, req: &'static str) -> Self::Future {
- ok(req)
+ ready(Ok(req))
}
}
@@ -288,7 +289,7 @@ mod tests {
}
fn call(&self, req: &'static str) -> Self::Future {
- ok((req, "srv2"))
+ ready(Ok((req, "srv2")))
}
}
diff --git a/actix-service/src/apply.rs b/actix-service/src/apply.rs
index 8c7097c0..2bf88637 100644
--- a/actix-service/src/apply.rs
+++ b/actix-service/src/apply.rs
@@ -208,14 +208,12 @@ where
#[cfg(test)]
mod tests {
+ use core::future::{ready, Ready};
+
use futures_util::future::lazy;
use super::*;
- use crate::{
- ok,
- pipeline::{pipeline, pipeline_factory},
- Ready,
- };
+ use crate::pipeline::{pipeline, pipeline_factory};
#[derive(Clone)]
struct Srv;
@@ -228,7 +226,7 @@ mod tests {
crate::always_ready!();
fn call(&self, _: ()) -> Self::Future {
- ok(())
+ ready(Ok(()))
}
}
@@ -252,7 +250,7 @@ mod tests {
#[actix_rt::test]
async fn test_new_service() {
let new_srv = pipeline_factory(apply_fn_factory(
- || ok::<_, ()>(Srv),
+ || ready(Ok::<_, ()>(Srv)),
|req: &'static str, srv| {
let fut = srv.call(());
async move {
diff --git a/actix-service/src/fn_service.rs b/actix-service/src/fn_service.rs
index c0f8a9c3..b4d82013 100644
--- a/actix-service/src/fn_service.rs
+++ b/actix-service/src/fn_service.rs
@@ -1,6 +1,9 @@
-use core::{future::Future, marker::PhantomData};
+use core::{
+ future::{ready, Future, Ready},
+ marker::PhantomData,
+};
-use crate::{ok, IntoService, IntoServiceFactory, Ready, Service, ServiceFactory};
+use crate::{IntoService, IntoServiceFactory, Service, ServiceFactory};
/// Create `ServiceFactory` for function that can act as a `Service`
pub fn fn_service(f: F) -> FnServiceFactory
@@ -210,7 +213,7 @@ where
type Future = Ready>;
fn new_service(&self, _: Cfg) -> Self::Future {
- ok(FnService::new(self.f.clone()))
+ ready(Ok(FnService::new(self.f.clone())))
}
}
@@ -346,7 +349,7 @@ where
#[cfg(test)]
mod tests {
- use core::task::Poll;
+ use core::{future::ready, task::Poll};
use futures_util::future::lazy;
@@ -354,7 +357,7 @@ mod tests {
#[actix_rt::test]
async fn test_fn_service() {
- let new_srv = fn_service(|()| ok::<_, ()>("srv"));
+ let new_srv = fn_service(|()| ready(Ok::<_, ()>("srv")));
let srv = new_srv.new_service(()).await.unwrap();
let res = srv.call(()).await;
@@ -365,7 +368,7 @@ mod tests {
#[actix_rt::test]
async fn test_fn_service_service() {
- let srv = fn_service(|()| ok::<_, ()>("srv"));
+ let srv = fn_service(|()| ready(Ok::<_, ()>("srv")));
let res = srv.call(()).await;
assert_eq!(lazy(|cx| srv.poll_ready(cx)).await, Poll::Ready(Ok(())));
@@ -376,7 +379,9 @@ mod tests {
#[actix_rt::test]
async fn test_fn_service_with_config() {
let new_srv = fn_factory_with_config(|cfg: usize| {
- ok::<_, ()>(fn_service(move |()| ok::<_, ()>(("srv", cfg))))
+ ready(Ok::<_, ()>(fn_service(move |()| {
+ ready(Ok::<_, ()>(("srv", cfg)))
+ })))
});
let srv = new_srv.new_service(1).await.unwrap();
@@ -392,14 +397,19 @@ mod tests {
use crate::{map_config, ServiceExt, ServiceFactoryExt};
- let srv_1 = fn_service(|_: Rc| ok::<_, Rc>(Rc::new(0u8)));
+ let srv_1 = fn_service(|_: Rc| ready(Ok::<_, Rc>(Rc::new(0u8))));
let fac_1 = fn_factory_with_config(|_: Rc| {
- ok::<_, Rc>(fn_service(|_: Rc| ok::<_, Rc>(Rc::new(0u8))))
+ ready(Ok::<_, Rc>(fn_service(|_: Rc| {
+ ready(Ok::<_, Rc>(Rc::new(0u8)))
+ })))
});
- let fac_2 =
- fn_factory(|| ok::<_, Rc>(fn_service(|_: Rc| ok::<_, Rc>(Rc::new(0u8)))));
+ let fac_2 = fn_factory(|| {
+ ready(Ok::<_, Rc>(fn_service(|_: Rc| {
+ ready(Ok::<_, Rc>(Rc::new(0u8)))
+ })))
+ });
fn is_send(_: &T) {}
diff --git a/actix-service/src/lib.rs b/actix-service/src/lib.rs
index 963851ac..43587842 100644
--- a/actix-service/src/lib.rs
+++ b/actix-service/src/lib.rs
@@ -26,13 +26,10 @@ mod map_config;
mod map_err;
mod map_init_err;
mod pipeline;
-mod ready;
mod then;
mod transform;
mod transform_err;
-#[allow(unused_imports)]
-use self::ready::{err, ok, ready, Ready};
pub use self::{
apply::{apply_fn, apply_fn_factory},
apply_cfg::{apply_cfg, apply_cfg_factory},
diff --git a/actix-service/src/map.rs b/actix-service/src/map.rs
index 97aec16e..23dc0d08 100644
--- a/actix-service/src/map.rs
+++ b/actix-service/src/map.rs
@@ -199,10 +199,12 @@ where
#[cfg(test)]
mod tests {
+ use core::future::{ready, Ready};
+
use futures_util::future::lazy;
use super::*;
- use crate::{ok, IntoServiceFactory, Ready, ServiceExt, ServiceFactoryExt};
+ use crate::{IntoServiceFactory, ServiceExt, ServiceFactoryExt};
struct Srv;
@@ -214,7 +216,7 @@ mod tests {
crate::always_ready!();
fn call(&self, _: ()) -> Self::Future {
- ok(())
+ ready(Ok(()))
}
}
@@ -235,7 +237,7 @@ mod tests {
#[actix_rt::test]
async fn test_new_service() {
- let new_srv = (|| ok::<_, ()>(Srv)).into_factory().map(|_| "ok");
+ let new_srv = (|| ready(Ok::<_, ()>(Srv))).into_factory().map(|_| "ok");
let srv = new_srv.new_service(&()).await.unwrap();
let res = srv.call(()).await;
assert!(res.is_ok());
diff --git a/actix-service/src/map_err.rs b/actix-service/src/map_err.rs
index da77b242..e3836ed8 100644
--- a/actix-service/src/map_err.rs
+++ b/actix-service/src/map_err.rs
@@ -202,10 +202,12 @@ where
#[cfg(test)]
mod tests {
+ use core::future::{ready, Ready};
+
use futures_util::future::lazy;
use super::*;
- use crate::{err, ok, IntoServiceFactory, Ready, ServiceExt, ServiceFactoryExt};
+ use crate::{IntoServiceFactory, ServiceExt, ServiceFactoryExt};
struct Srv;
@@ -219,7 +221,7 @@ mod tests {
}
fn call(&self, _: ()) -> Self::Future {
- err(())
+ ready(Err(()))
}
}
@@ -240,7 +242,9 @@ mod tests {
#[actix_rt::test]
async fn test_new_service() {
- let new_srv = (|| ok::<_, ()>(Srv)).into_factory().map_err(|_| "error");
+ let new_srv = (|| ready(Ok::<_, ()>(Srv)))
+ .into_factory()
+ .map_err(|_| "error");
let srv = new_srv.new_service(&()).await.unwrap();
let res = srv.call(()).await;
assert!(res.is_err());
diff --git a/actix-service/src/ready.rs b/actix-service/src/ready.rs
deleted file mode 100644
index 7e32fa9e..00000000
--- a/actix-service/src/ready.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-//! When MSRV is 1.82, replace with `core::future::Ready` and `core::future::ready()`.
-
-use core::{
- future::Future,
- pin::Pin,
- task::{Context, Poll},
-};
-
-/// Future for the [`ready`](ready()) function.
-#[derive(Debug, Clone)]
-#[must_use = "futures do nothing unless you `.await` or poll them"]
-pub struct Ready {
- val: Option,
-}
-
-impl Ready {
- /// Unwraps the value from this immediately ready future.
- #[inline]
- pub fn into_inner(mut self) -> T {
- self.val.take().unwrap()
- }
-}
-
-impl Unpin for Ready {}
-
-impl Future for Ready {
- type Output = T;
-
- #[inline]
- fn poll(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll {
- let val = self.val.take().expect("Ready can not be polled twice.");
- Poll::Ready(val)
- }
-}
-
-/// Creates a future that is immediately ready with a value.
-#[allow(dead_code)]
-pub(crate) fn ready(val: T) -> Ready {
- Ready { val: Some(val) }
-}
-
-/// Create a future that is immediately ready with a success value.
-#[allow(dead_code)]
-pub(crate) fn ok(val: T) -> Ready> {
- Ready { val: Some(Ok(val)) }
-}
-
-/// Create a future that is immediately ready with an error value.
-#[allow(dead_code)]
-pub(crate) fn err(err: E) -> Ready> {
- Ready {
- val: Some(Err(err)),
- }
-}
diff --git a/actix-service/src/then.rs b/actix-service/src/then.rs
index 82b9dc94..09c14a07 100644
--- a/actix-service/src/then.rs
+++ b/actix-service/src/then.rs
@@ -241,15 +241,15 @@ mod tests {
use alloc::rc::Rc;
use core::{
cell::Cell,
+ future::{ready, Ready},
task::{Context, Poll},
};
use futures_util::future::lazy;
use crate::{
- err, ok,
pipeline::{pipeline, pipeline_factory},
- ready, Ready, Service, ServiceFactory,
+ Service, ServiceFactory,
};
#[derive(Clone)]
@@ -267,8 +267,8 @@ mod tests {
fn call(&self, req: Result<&'static str, &'static str>) -> Self::Future {
match req {
- Ok(msg) => ok(msg),
- Err(_) => err(()),
+ Ok(msg) => ready(Ok(msg)),
+ Err(_) => ready(Err(())),
}
}
}
@@ -287,8 +287,8 @@ mod tests {
fn call(&self, req: Result<&'static str, ()>) -> Self::Future {
match req {
- Ok(msg) => ok((msg, "ok")),
- Err(()) => ok(("srv2", "err")),
+ Ok(msg) => ready(Ok((msg, "ok"))),
+ Err(()) => ready(Ok(("srv2", "err"))),
}
}
}
diff --git a/actix-service/src/transform.rs b/actix-service/src/transform.rs
index cffa3e61..98ad7a07 100644
--- a/actix-service/src/transform.rs
+++ b/actix-service/src/transform.rs
@@ -221,9 +221,10 @@ where
#[cfg(test)]
mod tests {
- use core::time::Duration;
-
- use actix_utils::future::{ready, Ready};
+ use core::{
+ future::{ready, Ready},
+ time::Duration,
+ };
use super::*;
diff --git a/actix-tls/CHANGES.md b/actix-tls/CHANGES.md
index 4f0bc4e8..6b1bdbbe 100644
--- a/actix-tls/CHANGES.md
+++ b/actix-tls/CHANGES.md
@@ -2,6 +2,9 @@
## Unreleased
+- Minimum supported Rust version (MSRV) is now 1.88.
+- internal: Use `core::future::{ready, Ready}` instead of actix-utils'
+
## 3.5.0
- Update `rustls-native-certs` (`0.7`) dependency to `0.8`.
diff --git a/actix-tls/README.md b/actix-tls/README.md
index 081c3e7f..a6c15fc5 100644
--- a/actix-tls/README.md
+++ b/actix-tls/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/actix-tls)
[](https://docs.rs/actix-tls/3.5.0)
-[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
+[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)

[](https://deps.rs/crate/actix-tls/3.5.0)
diff --git a/actix-tls/src/accept/native_tls.rs b/actix-tls/src/accept/native_tls.rs
index aad9c4c8..ceb58fac 100644
--- a/actix-tls/src/accept/native_tls.rs
+++ b/actix-tls/src/accept/native_tls.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
io::{self, IoSlice},
@@ -15,10 +16,7 @@ use actix_rt::{
time::timeout,
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::Counter,
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::Counter;
use futures_core::future::LocalBoxFuture;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_native_tls::{native_tls::Error, TlsAcceptor};
diff --git a/actix-tls/src/accept/openssl.rs b/actix-tls/src/accept/openssl.rs
index 81c207ee..4f595a65 100644
--- a/actix-tls/src/accept/openssl.rs
+++ b/actix-tls/src/accept/openssl.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
future::Future,
@@ -16,10 +17,7 @@ use actix_rt::{
time::{sleep, Sleep},
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::{Counter, CounterGuard},
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::{Counter, CounterGuard};
use openssl::ssl::{Error, Ssl, SslAcceptor};
use pin_project_lite::pin_project;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
diff --git a/actix-tls/src/accept/rustls_0_20.rs b/actix-tls/src/accept/rustls_0_20.rs
index f8c9206c..b2d785c9 100644
--- a/actix-tls/src/accept/rustls_0_20.rs
+++ b/actix-tls/src/accept/rustls_0_20.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
future::Future,
@@ -17,10 +18,7 @@ use actix_rt::{
time::{sleep, Sleep},
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::{Counter, CounterGuard},
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::{Counter, CounterGuard};
use pin_project_lite::pin_project;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_rustls::{Accept, TlsAcceptor};
diff --git a/actix-tls/src/accept/rustls_0_21.rs b/actix-tls/src/accept/rustls_0_21.rs
index fcf6a693..0725fcdd 100644
--- a/actix-tls/src/accept/rustls_0_21.rs
+++ b/actix-tls/src/accept/rustls_0_21.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
future::Future,
@@ -17,10 +18,7 @@ use actix_rt::{
time::{sleep, Sleep},
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::{Counter, CounterGuard},
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::{Counter, CounterGuard};
use pin_project_lite::pin_project;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_rustls::{Accept, TlsAcceptor};
diff --git a/actix-tls/src/accept/rustls_0_22.rs b/actix-tls/src/accept/rustls_0_22.rs
index 46b4c03e..fd23ee68 100644
--- a/actix-tls/src/accept/rustls_0_22.rs
+++ b/actix-tls/src/accept/rustls_0_22.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
future::Future,
@@ -17,10 +18,7 @@ use actix_rt::{
time::{sleep, Sleep},
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::{Counter, CounterGuard},
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::{Counter, CounterGuard};
use pin_project_lite::pin_project;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_rustls::{Accept, TlsAcceptor};
diff --git a/actix-tls/src/accept/rustls_0_23.rs b/actix-tls/src/accept/rustls_0_23.rs
index 9d2025ba..26b87f86 100644
--- a/actix-tls/src/accept/rustls_0_23.rs
+++ b/actix-tls/src/accept/rustls_0_23.rs
@@ -2,6 +2,7 @@
//!
//! See [`Acceptor`] for main service factory docs.
+use core::future::{ready, Ready as FutReady};
use std::{
convert::Infallible,
future::Future,
@@ -17,10 +18,7 @@ use actix_rt::{
time::{sleep, Sleep},
};
use actix_service::{Service, ServiceFactory};
-use actix_utils::{
- counter::{Counter, CounterGuard},
- future::{ready, Ready as FutReady},
-};
+use actix_utils::counter::{Counter, CounterGuard};
use pin_project_lite::pin_project;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_rustls::{Accept, TlsAcceptor};
diff --git a/actix-tls/src/connect/connector.rs b/actix-tls/src/connect/connector.rs
index a4276548..1009cbec 100644
--- a/actix-tls/src/connect/connector.rs
+++ b/actix-tls/src/connect/connector.rs
@@ -1,3 +1,4 @@
+use core::future::{ready, Ready};
use std::{
future::Future,
pin::Pin,
@@ -6,7 +7,6 @@ use std::{
use actix_rt::net::TcpStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use super::{
@@ -49,7 +49,7 @@ impl ServiceFactory> for Connector {
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(self.service())
+ ready(Ok(self.service()))
}
}
diff --git a/actix-tls/src/connect/native_tls.rs b/actix-tls/src/connect/native_tls.rs
index 674de842..dbacd574 100644
--- a/actix-tls/src/connect/native_tls.rs
+++ b/actix-tls/src/connect/native_tls.rs
@@ -2,11 +2,11 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::io;
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::future::LocalBoxFuture;
use tokio_native_tls::{
native_tls::TlsConnector as NativeTlsConnector, TlsConnector as AsyncNativeTlsConnector,
@@ -51,7 +51,7 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(self.clone())
+ ready(Ok(self.clone()))
}
}
diff --git a/actix-tls/src/connect/openssl.rs b/actix-tls/src/connect/openssl.rs
index 0b17f9a2..3533f98b 100644
--- a/actix-tls/src/connect/openssl.rs
+++ b/actix-tls/src/connect/openssl.rs
@@ -2,6 +2,7 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -11,7 +12,6 @@ use std::{
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use openssl::ssl::SslConnector;
use tokio_openssl::SslStream as AsyncSslStream;
@@ -64,9 +64,9 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(TlsConnectorService {
+ ready(Ok(TlsConnectorService {
connector: self.connector.clone(),
- })
+ }))
}
}
diff --git a/actix-tls/src/connect/resolver.rs b/actix-tls/src/connect/resolver.rs
index 5ab5f475..e5d1b891 100644
--- a/actix-tls/src/connect/resolver.rs
+++ b/actix-tls/src/connect/resolver.rs
@@ -1,3 +1,4 @@
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -10,7 +11,6 @@ use std::{
use actix_rt::task::{spawn_blocking, JoinHandle};
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::{future::LocalBoxFuture, ready};
use tracing::trace;
@@ -45,7 +45,7 @@ impl ServiceFactory> for Resolver {
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(self.resolver.clone())
+ ready(Ok(self.resolver.clone()))
}
}
diff --git a/actix-tls/src/connect/rustls_0_20.rs b/actix-tls/src/connect/rustls_0_20.rs
index 27d26292..9e19b754 100644
--- a/actix-tls/src/connect/rustls_0_20.rs
+++ b/actix-tls/src/connect/rustls_0_20.rs
@@ -2,6 +2,7 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -12,7 +13,6 @@ use std::{
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use tokio_rustls::{
client::TlsStream as AsyncTlsStream,
@@ -100,9 +100,9 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(TlsConnectorService {
+ ready(Ok(TlsConnectorService {
connector: self.connector.clone(),
- })
+ }))
}
}
diff --git a/actix-tls/src/connect/rustls_0_21.rs b/actix-tls/src/connect/rustls_0_21.rs
index 071cb98e..58cbfc68 100644
--- a/actix-tls/src/connect/rustls_0_21.rs
+++ b/actix-tls/src/connect/rustls_0_21.rs
@@ -2,6 +2,7 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -12,7 +13,6 @@ use std::{
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use tokio_rustls::{
client::TlsStream as AsyncTlsStream,
@@ -100,9 +100,9 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(TlsConnectorService {
+ ready(Ok(TlsConnectorService {
connector: self.connector.clone(),
- })
+ }))
}
}
diff --git a/actix-tls/src/connect/rustls_0_22.rs b/actix-tls/src/connect/rustls_0_22.rs
index de6c28e4..264258fe 100644
--- a/actix-tls/src/connect/rustls_0_22.rs
+++ b/actix-tls/src/connect/rustls_0_22.rs
@@ -2,6 +2,7 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -12,7 +13,6 @@ use std::{
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use rustls_pki_types_1::ServerName;
use tokio_rustls::{
@@ -91,9 +91,9 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(TlsConnectorService {
+ ready(Ok(TlsConnectorService {
connector: self.connector.clone(),
- })
+ }))
}
}
diff --git a/actix-tls/src/connect/rustls_0_23.rs b/actix-tls/src/connect/rustls_0_23.rs
index da776468..c3727f98 100644
--- a/actix-tls/src/connect/rustls_0_23.rs
+++ b/actix-tls/src/connect/rustls_0_23.rs
@@ -2,6 +2,7 @@
//!
//! See [`TlsConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
future::Future,
io,
@@ -12,7 +13,6 @@ use std::{
use actix_rt::net::ActixStream;
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use rustls_pki_types_1::ServerName;
use tokio_rustls::{
@@ -91,9 +91,9 @@ where
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(TlsConnectorService {
+ ready(Ok(TlsConnectorService {
connector: self.connector.clone(),
- })
+ }))
}
}
diff --git a/actix-tls/src/connect/tcp.rs b/actix-tls/src/connect/tcp.rs
index b247e7f1..0aee74d4 100644
--- a/actix-tls/src/connect/tcp.rs
+++ b/actix-tls/src/connect/tcp.rs
@@ -2,6 +2,7 @@
//!
//! See [`TcpConnector`] for main connector service factory docs.
+use core::future::{ready, Ready};
use std::{
collections::VecDeque,
future::Future,
@@ -13,7 +14,6 @@ use std::{
use actix_rt::net::{TcpSocket, TcpStream};
use actix_service::{Service, ServiceFactory};
-use actix_utils::future::{ok, Ready};
use futures_core::ready;
use tokio_util::sync::ReusableBoxFuture;
use tracing::{error, trace};
@@ -41,7 +41,7 @@ impl ServiceFactory> for TcpConnector {
type Future = Ready>;
fn new_service(&self, _: ()) -> Self::Future {
- ok(self.service())
+ ready(Ok(self.service()))
}
}
diff --git a/actix-tls/tests/accept-openssl.rs b/actix-tls/tests/accept-openssl.rs
index ebac10d1..8fae2c48 100644
--- a/actix-tls/tests/accept-openssl.rs
+++ b/actix-tls/tests/accept-openssl.rs
@@ -7,6 +7,7 @@
feature = "openssl"
))]
+use core::future::ready;
use std::{io::Write as _, sync::Arc};
use actix_rt::net::TcpStream;
@@ -16,7 +17,6 @@ use actix_tls::{
accept::openssl::{Acceptor, TlsStream},
connect::rustls_0_23::reexports::ClientConfig,
};
-use actix_utils::future::ok;
use rustls_pki_types_1::ServerName;
use tokio_rustls_026::rustls::RootCertStore;
@@ -127,7 +127,7 @@ async fn accepts_connections() {
tls_acceptor
.map_err(|err| println!("OpenSSL error: {err:?}"))
- .and_then(move |_stream: TlsStream| ok(()))
+ .and_then(move |_stream: TlsStream| ready(Ok(())))
}
});
diff --git a/actix-tls/tests/accept-rustls.rs b/actix-tls/tests/accept-rustls.rs
index c556050e..e04542ff 100644
--- a/actix-tls/tests/accept-rustls.rs
+++ b/actix-tls/tests/accept-rustls.rs
@@ -9,6 +9,7 @@
extern crate tls_openssl as openssl;
+use core::future::ready;
use std::io::{BufReader, Write};
use actix_rt::net::TcpStream;
@@ -18,7 +19,6 @@ use actix_tls::{
accept::rustls_0_23::{reexports::ServerConfig, Acceptor, TlsStream},
connect::openssl::reexports::SslConnector,
};
-use actix_utils::future::ok;
use rustls_pemfile::{certs, pkcs8_private_keys};
use rustls_pki_types_1::PrivateKeyDer;
use tls_openssl::ssl::SslVerifyMode;
@@ -88,7 +88,7 @@ async fn accepts_connections() {
tls_acceptor
.map_err(|err| println!("Rustls error: {err:?}"))
- .and_then(move |_stream: TlsStream| ok(()))
+ .and_then(move |_stream: TlsStream| ready(Ok(())))
}
});
diff --git a/actix-tracing/CHANGES.md b/actix-tracing/CHANGES.md
index 8f59bb50..4e907181 100644
--- a/actix-tracing/CHANGES.md
+++ b/actix-tracing/CHANGES.md
@@ -2,7 +2,8 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
+- internal: Use `core::future::{ready, Ready}` instead of actix-utils'
## 0.1.0
diff --git a/actix-tracing/src/lib.rs b/actix-tracing/src/lib.rs
index f110ccbe..d7b072a4 100644
--- a/actix-tracing/src/lib.rs
+++ b/actix-tracing/src/lib.rs
@@ -3,12 +3,15 @@
#![doc(html_logo_url = "https://actix.rs/img/logo.png")]
#![doc(html_favicon_url = "https://actix.rs/favicon.ico")]
-use core::marker::PhantomData;
+use core::{
+ future::{ready, Ready},
+ marker::PhantomData,
+};
use actix_service::{
apply, ApplyTransform, IntoServiceFactory, Service, ServiceFactory, Transform,
};
-use actix_utils::future::{ok, Either, Ready};
+use actix_utils::future::Either;
use tracing_futures::{Instrument, Instrumented};
/// A `Service` implementation that automatically enters/exits tracing spans
@@ -84,7 +87,7 @@ where
type Future = Ready>;
fn new_transform(&self, service: S) -> Self::Future {
- ok(TracingService::new(service, self.make_span.clone()))
+ ready(Ok(TracingService::new(service, self.make_span.clone())))
}
}
@@ -118,6 +121,7 @@ where
#[cfg(test)]
mod test {
+ use core::future::ready;
use std::{
cell::RefCell,
collections::{BTreeMap, BTreeSet},
@@ -221,10 +225,10 @@ mod test {
#[actix_rt::test]
async fn service_call() {
let service_factory = fn_factory(|| {
- ok::<_, ()>(fn_service(|req: &'static str| {
+ ready(Ok::<_, ()>(fn_service(|req: &'static str| {
tracing::event!(Level::TRACE, "It's happening - {}!", req);
- ok::<_, ()>(())
- }))
+ ready(Ok::<_, ()>(()))
+ })))
});
let subscriber = TestSubscriber::default();
diff --git a/actix-utils/CHANGES.md b/actix-utils/CHANGES.md
index 9cd71ef3..ca21abb8 100644
--- a/actix-utils/CHANGES.md
+++ b/actix-utils/CHANGES.md
@@ -2,7 +2,8 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
+- Deprecate `crate::ready::*` in favor of `core::future::{ready, Ready}`
## 3.0.1
diff --git a/actix-utils/src/future/either.rs b/actix-utils/src/future/either.rs
index 78582954..018de24e 100644
--- a/actix-utils/src/future/either.rs
+++ b/actix-utils/src/future/either.rs
@@ -15,7 +15,8 @@ pin_project! {
///
/// # Examples
/// ```
- /// use actix_utils::future::{ready, Ready, Either};
+ /// use actix_utils::future::Either;
+ /// use core::future::{ready, Ready};
///
/// # async fn run() {
/// let res = Either::<_, Ready>::left(ready(42));
@@ -81,8 +82,9 @@ where
#[cfg(test)]
mod tests {
+ use core::future::{ready, Ready};
+
use super::*;
- use crate::future::{ready, Ready};
#[actix_rt::test]
async fn test_either() {
diff --git a/actix-utils/src/future/mod.rs b/actix-utils/src/future/mod.rs
index ec87428d..d03ac061 100644
--- a/actix-utils/src/future/mod.rs
+++ b/actix-utils/src/future/mod.rs
@@ -4,8 +4,9 @@ mod either;
mod poll_fn;
mod ready;
+#[allow(deprecated)]
+pub use self::ready::{err, ok, ready, Ready};
pub use self::{
either::Either,
poll_fn::{poll_fn, PollFn},
- ready::{err, ok, ready, Ready},
};
diff --git a/actix-utils/src/future/ready.rs b/actix-utils/src/future/ready.rs
index 31eb6551..f8dfe22e 100644
--- a/actix-utils/src/future/ready.rs
+++ b/actix-utils/src/future/ready.rs
@@ -1,4 +1,6 @@
-//! When `core::future::Ready` has a `into_inner()` method, this can be deprecated.
+//! Deprecated. Use `core::future::Ready` instead, it has the same functionality.
+
+#![allow(deprecated)]
use core::{
future::Future,
@@ -26,6 +28,7 @@ use core::{
/// ```
#[derive(Debug, Clone)]
#[must_use = "futures do nothing unless you `.await` or poll them"]
+#[deprecated(since = "3.0.2", note = "Use `core::future::Ready` instead.")]
pub struct Ready {
val: Option,
}
@@ -66,6 +69,7 @@ impl Future for Ready {
/// assert_eq!(a.into_inner(), 1);
/// ```
#[inline]
+#[deprecated(since = "3.0.2", note = "Use `core::future::ready(val)` instead.")]
pub fn ready(val: T) -> Ready {
Ready { val: Some(val) }
}
@@ -82,6 +86,7 @@ pub fn ready(val: T) -> Ready {
/// # }
/// ```
#[inline]
+#[deprecated(since = "3.0.2", note = "Use `core::future::ready(Ok(val))` instead.")]
pub fn ok(val: T) -> Ready> {
Ready { val: Some(Ok(val)) }
}
@@ -98,6 +103,7 @@ pub fn ok(val: T) -> Ready> {
/// # }
/// ```
#[inline]
+#[deprecated(since = "3.0.2", note = "Use `core::future::ready(Err(err))` instead.")]
pub fn err(err: E) -> Ready> {
Ready {
val: Some(Err(err)),
@@ -105,6 +111,7 @@ pub fn err(err: E) -> Ready> {
}
#[cfg(test)]
+#[allow(deprecated)]
mod tests {
use std::rc::Rc;
diff --git a/bytestring/CHANGES.md b/bytestring/CHANGES.md
index d82400d7..b29e3e72 100644
--- a/bytestring/CHANGES.md
+++ b/bytestring/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 1.5.0
diff --git a/bytestring/README.md b/bytestring/README.md
index 589c35c4..f55bbc4a 100644
--- a/bytestring/README.md
+++ b/bytestring/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/bytestring)
[](https://docs.rs/bytestring/1.5.0)
-[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
+[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)

[](https://deps.rs/crate/bytestring/1.5.0)
diff --git a/justfile b/justfile
index 7912634c..8c473132 100644
--- a/justfile
+++ b/justfile
@@ -23,14 +23,6 @@ fmt:
# Downgrade dependencies necessary to run MSRV checks/tests.
[private]
downgrade-for-msrv:
- cargo {{ toolchain }} update -p=rayon --precise=1.10.0 # next ver: 1.80.0
- cargo {{ toolchain }} update -p=rayon-core --precise=1.12.1 # next ver: 1.80.0
- cargo {{ toolchain }} update -p=native-tls --precise=0.2.13 # next ver: 1.80.0
- cargo {{ toolchain }} update -p=idna_adapter --precise=1.2.0 # next ver: 1.82.0
- cargo {{ toolchain }} update -p=litemap --precise=0.7.4 # next ver: 1.81.0
- cargo {{ toolchain }} update -p=zerofrom --precise=0.1.5 # next ver: 1.81.0
- cargo {{ toolchain }} update -p=half --precise=2.4.1 # next ver: 1.81.0
- cargo {{ toolchain }} update -p=time --precise=0.3.41 # next ver: 1.81.0
msrv := ```
cargo metadata --format-version=1 \
diff --git a/local-channel/CHANGES.md b/local-channel/CHANGES.md
index fbd52108..bdc0c7ea 100644
--- a/local-channel/CHANGES.md
+++ b/local-channel/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 0.1.5
diff --git a/local-channel/README.md b/local-channel/README.md
index 5a320383..5cc14692 100644
--- a/local-channel/README.md
+++ b/local-channel/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/local-channel)
[](https://docs.rs/local-channel/0.1.5)
-[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
+[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)

[](https://deps.rs/crate/local-channel/0.1.5)
diff --git a/local-waker/CHANGES.md b/local-waker/CHANGES.md
index 72431a08..00883d58 100644
--- a/local-waker/CHANGES.md
+++ b/local-waker/CHANGES.md
@@ -2,7 +2,7 @@
## Unreleased
-- Minimum supported Rust version (MSRV) is now 1.76.
+- Minimum supported Rust version (MSRV) is now 1.88.
## 0.1.4
diff --git a/local-waker/README.md b/local-waker/README.md
index f82ca84b..db9d24d8 100644
--- a/local-waker/README.md
+++ b/local-waker/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/local-waker)
[](https://docs.rs/local-waker/0.1.4)
-[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)
+[](https://blog.rust-lang.org/2021/05/06/Rust-1.52.0.html)

[](https://deps.rs/crate/local-waker/0.1.4)
|