diff --git a/CHANGELOG.md b/CHANGELOG.md
index 91225eba9..217cbf6c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased]:
- Added `ToMut` trait, which allows borrowing mutably from a Coproduct or HList.
+- Added `FuncMut` and `PolyMut`, which parallel `Func` and `Poly`.
## [0.2.2] - 2018-10-21
- Added support for [transmogrifying (recursively sculpting)](https://docs.rs/frunk/0.2.2/frunk/labelled/trait.Transmogrifier.html) one data type into another
diff --git a/core/src/coproduct.rs b/core/src/coproduct.rs
index 3cb6033b0..71f86c534 100644
--- a/core/src/coproduct.rs
+++ b/core/src/coproduct.rs
@@ -73,7 +73,7 @@
use hlist::{HCons, HNil};
use indices::{Here, There};
-use traits::{Func, Poly, ToMut, ToRef};
+use traits::{Func, FuncMut, Poly, PolyMut, ToMut, ToRef};
/// Enum type representing a Coproduct. Think of this as a Result, but capable
/// of supporting any arbitrary number of types instead of just 2.
@@ -506,9 +506,10 @@ impl
Coproduct {
///
/// * An `hlist![]` of closures (one for each type, in order).
/// * A single closure (for a Coproduct that is homogenous).
- /// * A single [`Poly`].
+ /// * A single [`Poly`] or [`PolyMut`].
///
/// [`Poly`]: ../traits/struct.Poly.html
+ /// [`PolyMut`]: ../traits/struct.PolyMut.html
///
/// # Example
///
@@ -745,6 +746,20 @@ where
}
}
+impl