Coverage Report

Created: 2025-11-16 06:36

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/der-0.7.10/src/encode_ref.rs
Line
Count
Source
1
//! Wrapper object for encoding reference types.
2
// TODO(tarcieri): replace with blanket impls of `Encode(Value)` for reference types?
3
4
use crate::{Encode, EncodeValue, Length, Result, Tag, Tagged, ValueOrd, Writer};
5
use core::cmp::Ordering;
6
7
/// Reference encoder: wrapper type which impls `Encode` for any reference to a
8
/// type which impls the same.
9
pub struct EncodeRef<'a, T>(pub &'a T);
10
11
impl<'a, T> AsRef<T> for EncodeRef<'a, T> {
12
0
    fn as_ref(&self) -> &T {
13
0
        self.0
14
0
    }
15
}
16
17
impl<'a, T> Encode for EncodeRef<'a, T>
18
where
19
    T: Encode,
20
{
21
0
    fn encoded_len(&self) -> Result<Length> {
22
0
        self.0.encoded_len()
23
0
    }
24
25
0
    fn encode(&self, writer: &mut impl Writer) -> Result<()> {
26
0
        self.0.encode(writer)
27
0
    }
28
}
29
30
/// Reference value encoder: wrapper type which impls `EncodeValue` and `Tagged`
31
/// for any reference type which impls the same.
32
///
33
/// By virtue of the blanket impl, this type also impls `Encode`.
34
pub struct EncodeValueRef<'a, T>(pub &'a T);
35
36
impl<'a, T> AsRef<T> for EncodeValueRef<'a, T> {
37
0
    fn as_ref(&self) -> &T {
38
0
        self.0
39
0
    }
40
}
41
42
impl<'a, T> EncodeValue for EncodeValueRef<'a, T>
43
where
44
    T: EncodeValue,
45
{
46
0
    fn value_len(&self) -> Result<Length> {
47
0
        self.0.value_len()
48
0
    }
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<sec1::parameters::EcParameters> as der::encode::EncodeValue>::value_len
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<_> as der::encode::EncodeValue>::value_len
49
50
0
    fn encode_value(&self, writer: &mut impl Writer) -> Result<()> {
51
0
        self.0.encode_value(writer)
52
0
    }
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<sec1::parameters::EcParameters> as der::encode::EncodeValue>::encode_value::<der::writer::slice::SliceWriter>
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<_> as der::encode::EncodeValue>::encode_value::<_>
53
}
54
55
impl<'a, T> Tagged for EncodeValueRef<'a, T>
56
where
57
    T: Tagged,
58
{
59
0
    fn tag(&self) -> Tag {
60
0
        self.0.tag()
61
0
    }
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<sec1::parameters::EcParameters> as der::tag::Tagged>::tag
Unexecuted instantiation: <der::encode_ref::EncodeValueRef<_> as der::tag::Tagged>::tag
62
}
63
64
impl<'a, T> ValueOrd for EncodeValueRef<'a, T>
65
where
66
    T: ValueOrd,
67
{
68
0
    fn value_cmp(&self, other: &Self) -> Result<Ordering> {
69
0
        self.0.value_cmp(other.0)
70
0
    }
71
}