Skip to content

Commit 665fac0

Browse files
committed
f - remove Bech32WithoutChecksumWriter
1 parent fe3c5dd commit 665fac0

File tree

1 file changed

+12
-57
lines changed

1 file changed

+12
-57
lines changed

src/lib.rs

Lines changed: 12 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -221,40 +221,6 @@ impl<'a> Drop for Bech32Writer<'a> {
221221
}
222222
}
223223

224-
/// Allocationless Bech32 writer that doesn't write a checksum.
225-
pub struct Bech32WithoutChecksumWriter<'a> {
226-
formatter: &'a mut fmt::Write,
227-
}
228-
229-
impl<'a> Bech32WithoutChecksumWriter<'a> {
230-
/// Creates a new writer that can write a bech32 string without allocating itself.
231-
///
232-
/// This is a rather low-level API and doesn't check the HRP or data length for standard
233-
/// compliance.
234-
pub fn new(
235-
hrp: &str,
236-
fmt: &'a mut fmt::Write,
237-
) -> Result<Bech32WithoutChecksumWriter<'a>, fmt::Error> {
238-
let writer = Self {
239-
formatter: fmt,
240-
};
241-
242-
writer.formatter.write_str(hrp)?;
243-
writer.formatter.write_char(SEP)?;
244-
245-
Ok(writer)
246-
}
247-
}
248-
249-
impl<'a> WriteBase32 for Bech32WithoutChecksumWriter<'a> {
250-
type Err = fmt::Error;
251-
252-
/// Writes a single 5 bit value of the data part
253-
fn write_u5(&mut self, data: u5) -> fmt::Result {
254-
self.formatter.write_char(data.to_char())
255-
}
256-
}
257-
258224
/// Parse/convert base32 slice to `Self`. It is the reciprocal of
259225
/// `ToBase32`.
260226
pub trait FromBase32: Sized {
@@ -471,15 +437,20 @@ pub fn encode_without_checksum_to_fmt<T: AsRef<[u5]>>(
471437
hrp: &str,
472438
data: T,
473439
) -> Result<fmt::Result, Error> {
474-
let hrp_lower = match check_hrp(hrp)? {
440+
let hrp = match check_hrp(hrp)? {
475441
Case::Upper => Cow::Owned(hrp.to_lowercase()),
476442
Case::Lower | Case::None => Cow::Borrowed(hrp),
477443
};
478444

479-
match Bech32WithoutChecksumWriter::new(&hrp_lower, fmt) {
480-
Ok(mut writer) => Ok(writer.write(data.as_ref())),
481-
Err(e) => Ok(Err(e)),
482-
}
445+
let mut write = || {
446+
fmt.write_str(&hrp)?;
447+
fmt.write_char(SEP)?;
448+
for b in data.as_ref() {
449+
fmt.write_char(b.to_char())?;
450+
}
451+
Ok(())
452+
};
453+
Ok(write())
483454
}
484455

485456
/// Used for encode/decode operations for the two variants of Bech32
@@ -1022,13 +993,13 @@ mod tests {
1022993

1023994
let mut written_str = String::new();
1024995
{
1025-
let mut writer = Bech32WithoutChecksumWriter::new(hrp, &mut written_str).unwrap();
996+
let mut writer = Bech32Writer::new(hrp, Variant::Bech32, &mut written_str).unwrap();
1026997
writer.write(&data).unwrap();
1027998
}
1028999

10291000
let encoded_str = encode_without_checksum(hrp, data).unwrap();
10301001

1031-
assert_eq!(encoded_str, written_str);
1002+
assert_eq!(encoded_str, written_str[..written_str.len() - CHECKSUM_LENGTH]);
10321003
}
10331004

10341005
#[test]
@@ -1047,22 +1018,6 @@ mod tests {
10471018
assert_eq!(encoded_str, written_str);
10481019
}
10491020

1050-
#[test]
1051-
fn write_without_checksum_on_drop() {
1052-
let hrp = "lntb";
1053-
let data = "Hello World!".as_bytes().to_base32();
1054-
1055-
let mut written_str = String::new();
1056-
{
1057-
let mut writer = Bech32WithoutChecksumWriter::new(hrp, &mut written_str).unwrap();
1058-
writer.write(&data).unwrap();
1059-
}
1060-
1061-
let encoded_str = encode_without_checksum(hrp, data).unwrap();
1062-
1063-
assert_eq!(encoded_str, written_str);
1064-
}
1065-
10661021
#[test]
10671022
fn test_hrp_case() {
10681023
// Tests for issue with HRP case checking being ignored for encoding

0 commit comments

Comments
 (0)