1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::;
/// Sums lends of a [`Lender`] into a single Self.
///
/// This trait is similar to [`core::iter::Sum`], but for [`Lender`]s.
///
/// # Examples
/// ```rust
/// # use std::borrow::ToOwned;
/// # use lender::{prelude::*, SumLender};
/// struct I32Sum(pub i32);
/// impl<'lend> Lending<'lend> for I32Sum {
/// type Lend = &'lend i32;
/// }
/// impl<L: Lender> SumLender<L> for I32Sum
/// where
/// for<'all> L: Lending<'all, Lend = &'all i32>,
/// {
/// fn sum_lender(lender: L) -> Self {
/// I32Sum(lender.fold(0, |acc, x| acc + *x))
/// }
/// }
/// let e = lender::empty::<lend!(&'lend i32)>();
/// assert_eq!(I32Sum::sum_lender(e).0, 0);
/// ```
/// Sums lends of a [`FallibleLender`] into a single Self.
///
/// This trait is similar to [`core::iter::Sum`], but for [`FallibleLender`]s.
/// The [`Lender`] version of [`core::iter::Product`].
/// The [`FallibleLender`] version of [`core::iter::Product`].