Skip to content

Commit a1bb81b

Browse files
authored
der: allow all blanket impls on ?Sized types (#1451)
This fixes the `Tagged` and `Encode` trait impls on `str`, for example. Closes #1365
1 parent 97ead54 commit a1bb81b

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

der/src/encode.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ pub trait Encode {
6969

7070
impl<T> Encode for T
7171
where
72-
T: EncodeValue + Tagged,
72+
T: EncodeValue + Tagged + ?Sized,
7373
{
7474
/// Compute the length of this value in bytes when encoded as ASN.1 DER.
7575
fn encoded_len(&self) -> Result<Length> {
@@ -109,7 +109,10 @@ pub trait EncodePem: Encode + PemLabel {
109109
}
110110

111111
#[cfg(feature = "pem")]
112-
impl<T: Encode + PemLabel> EncodePem for T {
112+
impl<T> EncodePem for T
113+
where
114+
T: Encode + PemLabel + ?Sized,
115+
{
113116
fn to_pem(&self, line_ending: LineEnding) -> Result<String> {
114117
let der_len = usize::try_from(self.encoded_len()?)?;
115118
let pem_len = pem::encapsulated_len(Self::PEM_LABEL, line_ending, der_len)?;

der/src/tag.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub trait Tagged {
2626
}
2727

2828
/// Types which are [`FixedTag`] always have a known [`Tag`] type.
29-
impl<T: FixedTag> Tagged for T {
29+
impl<T: FixedTag + ?Sized> Tagged for T {
3030
fn tag(&self) -> Tag {
3131
T::TAG
3232
}

0 commit comments

Comments
 (0)