NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1012 most downloaded on crates.io
Service trait and combinators for representing asynchronous request/response operations.
Last release 2 years ago
no release in 18 months
Ships unpredictably
gaps range from 8 days to 3.2 years
Nearly every release is documented
notes for 30 of 30 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
40 releases · first in 2018
Minimum supported Rust version (MSRV) is now 1.71.
Service types can now be Send and 'static regardless of request, response, and config types, etc. [#397]
Send and 'static regardless of request, response, and config types, etc. #397One column per quarter.
[#388]: https://github.com/actix/actix-net/pull/388
Removed pipeline and related structs/functions. [#335]
Add default Service trait impl for Rc and &S: Service. [#288]
Service::poll_ready and Service::call receive &self. [#247]
The forward_ready! macro converts errors. [#246]
forward_ready! macro converts errors. #246Remove redundant type parameter from map_config.
map_config.Service, other traits, and many type signatures now take the the request type as a type parameter instead of an associated type. [#232]
Service, other traits, and many type signatures now take the the request type as a type parameter instead of an associated type. #232always_ready! and forward_ready! macros. #233no_std. #233pin-project-lite. #233AndThenApplyFn and Pipeline and_then_apply_fn. Use the .and_then(apply_fn(...)) construction. #233ServiceExt and ServiceFactoryExt extension traits. #235Removed unsound custom Cell implementation that allowed obtaining several mutable references to the same data, which is undefined behavior in Rust and
Fixed unsoundness in .and_then()/.then() service combinators.
- Revert 1.0.3 change
Fixed unsoundness in AndThenService impl.
AndThenService impl.Add into_service helper function.
into_service helper function.map_config() and unit_config() now accept IntoServiceFactory type.
map_config() and unit_config() now accept IntoServiceFactory type.Add Clone impl for Apply service
Renamed service_fn to fn_service
service_fn to fn_servicefactory_fn to fn_factoryfactory_fn_cfg to fn_factory_with_configRestore Transform::map_init_err() combinator
Transform::map_init_err() combinatorService/Factory::apply_fn() in form of Pipeline/Factory::and_then_apply_fn()Use owned config value for service factory
NewService renamed to ServiceFactory
std::futureNewService renamed to ServiceFactorypipeline and pipeline_factory functionCheck service readiness for new_apply_cfg combinator
new_apply_cfg combinator- Add new_apply_cfg function
new_apply_cfg functionAdd NewService::map_config and NewService::unit_config combinators.
NewService::map_config and NewService::unit_config combinators.NewService config.apply_cfg function.Poll boxed service call result immediately
- Add impl Service for Rc >.
impl<S: Service> Service for Rc<RefCell<S>>.Add Transform::from_err() combinator
Transform::from_err() combinatorapply_fn helperapply_fn_factory helperapply_transform helperapply_cfg helperAdd ApplyTransform new service for transform and new service.
ApplyTransform new service for transform and new service.NewService::apply_cfg() combinator, allows to use nested NewService with different config parameter.Change NewService::Future and Transform::Future to the IntoFuture trait.
NewService::Future and Transform::Future to the IntoFuture trait.AndThenTransform type- Simplify Transform trait
Added boxed NewService and Service.
Config parameter to NewService trait.Config parameter to NewTransform trait.Added NewService impl for Rc where S: NewService
NewService impl for Rc<S> where S: NewServiceNewService impl for Arc<S> where S: NewServiceGeneralize .apply combinator with Transform trait
.apply combinator with Transform traitUse associated type instead of generic for Service definition.
impl Service<Request> for Client {
type Response = Response;
// ...
}
impl Service for Client {
type Request = Request;
type Response = Response;
// ...
}
Close the channel when mpsc::Sender is closed using Sink::poll_close() .
mpsc::Sender is closed using Sink::poll_close().FnMut instead of Fn for .apply() and .map() combinators and FnService type.apply() error semantic, new service's error is From<Self::Error>Make Out::Error convertible from T::Error for apply combinator
Out::Error convertible from T::Error for apply combinatorUse FnMut instead of Fn for FnService
FnMut instead of Fn for FnServiceSplit service combinators to separate trait
Release future early for .and_then() and .then() combinators
.and_then() and .then() combinators- Added Service impl for Box
Box<S: Service>- Initial import
Your coding agent can read these notes before it upgrades. Set up the MCP server →