Split argument/return impl-trait
@@ -654,18 +654,32 @@ fn to_vec<A: Clone>(xs: &[A]) -> Vec<A> {
Here, `first` has type `A`, referring to `to_vec`'s `A` type parameter; and
`rest` has type `Vec<A>`, a vector with element type `A`.
-## Abstract types
+## Anonymous type parameters
> Note: This section is a placeholder for more comprehensive reference
> material.
-Abstract types are types that stand in for another concrete type where the
+> Note: This is often called "impl Trait in argument position".
+
+Functions can declare an argument to be an anonymous type parameter where the
+callee must provide a type that has the bounds declared by the anonymous type
+parameter and the function can only use the methods available by the trait
+bounds of the anonymous type parameter.
+
+They are written as `impl` followed by a set of trait bounds.
+
+## Abstract return types
+
+> Note: This section is a placeholder for more comprehensive reference
+> material.
+
+> Note: This is often called "impl Trait in return position".
+
+Functions, except for associated trait functions, can return an abstract
+return type. These types stand in for another concrete type where the
use-site may only use the trait methods declared by the trait bounds of the
type.
-Abstract types are only allowed as the type of a parameter or return type of a
-function except for associated functions on traits.
-
They are written as `impl` followed by a set of trait bounds.
## Self types
