20
20
//! ];
21
21
//!
22
22
//! // Encode a taproot address suitable for use on mainnet.
23
- //! let _ = segwit::encode_v1(& hrp::BC, &witness_prog);
23
+ //! let _ = segwit::encode_v1(hrp::BC, &witness_prog);
24
24
//!
25
25
//! // Encode a segwit v0 address suitable for use on testnet.
26
- //! let _ = segwit::encode_v0(& hrp::TB, &witness_prog);
26
+ //! let _ = segwit::encode_v0(hrp::TB, &witness_prog);
27
27
//!
28
28
//! // If you have the witness version already you can use:
29
29
//! # let witness_version = segwit::VERSION_0;
30
- //! let _ = segwit::encode(& hrp::BC, witness_version, &witness_prog);
30
+ //! let _ = segwit::encode(hrp::BC, witness_version, &witness_prog);
31
31
//!
32
32
//! // Decode a Bitcoin bech32 segwit address.
33
33
//! let address = "bc1q2s3rjwvam9dt2ftt4sqxqjf3twav0gdx0k0q2etxflx38c3x8tnssdmnjq";
@@ -94,7 +94,7 @@ pub fn decode(s: &str) -> Result<(Hrp, Fe32, Vec<u8>), DecodeError> {
94
94
#[ cfg( feature = "alloc" ) ]
95
95
#[ inline]
96
96
pub fn encode (
97
- hrp : & Hrp ,
97
+ hrp : Hrp ,
98
98
witness_version : Fe32 ,
99
99
witness_program : & [ u8 ] ,
100
100
) -> Result < String , EncodeError > {
@@ -109,14 +109,14 @@ pub fn encode(
109
109
/// Encodes a segwit version 0 address.
110
110
#[ cfg( feature = "alloc" ) ]
111
111
#[ inline]
112
- pub fn encode_v0 ( hrp : & Hrp , witness_program : & [ u8 ] ) -> Result < String , EncodeError > {
112
+ pub fn encode_v0 ( hrp : Hrp , witness_program : & [ u8 ] ) -> Result < String , EncodeError > {
113
113
encode ( hrp, VERSION_0 , witness_program)
114
114
}
115
115
116
116
/// Encodes a segwit version 1 address.
117
117
#[ cfg( feature = "alloc" ) ]
118
118
#[ inline]
119
- pub fn encode_v1 ( hrp : & Hrp , witness_program : & [ u8 ] ) -> Result < String , EncodeError > {
119
+ pub fn encode_v1 ( hrp : Hrp , witness_program : & [ u8 ] ) -> Result < String , EncodeError > {
120
120
encode ( hrp, VERSION_1 , witness_program)
121
121
}
122
122
@@ -127,7 +127,7 @@ pub fn encode_v1(hrp: &Hrp, witness_program: &[u8]) -> Result<String, EncodeErro
127
127
#[ inline]
128
128
pub fn encode_to_fmt_unchecked < W : fmt:: Write > (
129
129
fmt : & mut W ,
130
- hrp : & Hrp ,
130
+ hrp : Hrp ,
131
131
witness_version : Fe32 ,
132
132
witness_program : & [ u8 ] ,
133
133
) -> fmt:: Result {
@@ -140,19 +140,19 @@ pub fn encode_to_fmt_unchecked<W: fmt::Write>(
140
140
/// the [`crate::primitives::segwit`] module for validation functions).
141
141
pub fn encode_lower_to_fmt_unchecked < W : fmt:: Write > (
142
142
fmt : & mut W ,
143
- hrp : & Hrp ,
143
+ hrp : Hrp ,
144
144
witness_version : Fe32 ,
145
145
witness_program : & [ u8 ] ,
146
146
) -> fmt:: Result {
147
147
let iter = witness_program. iter ( ) . copied ( ) . bytes_to_fes ( ) ;
148
148
match witness_version {
149
149
VERSION_0 => {
150
- for c in iter. with_checksum :: < Bech32 > ( hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
150
+ for c in iter. with_checksum :: < Bech32 > ( & hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
151
151
fmt. write_char ( c) ?;
152
152
}
153
153
}
154
154
version => {
155
- for c in iter. with_checksum :: < Bech32m > ( hrp) . with_witness_version ( version) . chars ( ) {
155
+ for c in iter. with_checksum :: < Bech32m > ( & hrp) . with_witness_version ( version) . chars ( ) {
156
156
fmt. write_char ( c) ?;
157
157
}
158
158
}
@@ -169,19 +169,19 @@ pub fn encode_lower_to_fmt_unchecked<W: fmt::Write>(
169
169
#[ inline]
170
170
pub fn encode_upper_to_fmt_unchecked < W : fmt:: Write > (
171
171
fmt : & mut W ,
172
- hrp : & Hrp ,
172
+ hrp : Hrp ,
173
173
witness_version : Fe32 ,
174
174
witness_program : & [ u8 ] ,
175
175
) -> fmt:: Result {
176
176
let iter = witness_program. iter ( ) . copied ( ) . bytes_to_fes ( ) ;
177
177
match witness_version {
178
178
VERSION_0 => {
179
- for c in iter. with_checksum :: < Bech32 > ( hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
179
+ for c in iter. with_checksum :: < Bech32 > ( & hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
180
180
fmt. write_char ( c. to_ascii_uppercase ( ) ) ?;
181
181
}
182
182
}
183
183
version => {
184
- for c in iter. with_checksum :: < Bech32m > ( hrp) . with_witness_version ( version) . chars ( ) {
184
+ for c in iter. with_checksum :: < Bech32m > ( & hrp) . with_witness_version ( version) . chars ( ) {
185
185
fmt. write_char ( c. to_ascii_uppercase ( ) ) ?;
186
186
}
187
187
}
@@ -198,7 +198,7 @@ pub fn encode_upper_to_fmt_unchecked<W: fmt::Write>(
198
198
#[ inline]
199
199
pub fn encode_to_writer_unchecked < W : std:: io:: Write > (
200
200
w : & mut W ,
201
- hrp : & Hrp ,
201
+ hrp : Hrp ,
202
202
witness_version : Fe32 ,
203
203
witness_program : & [ u8 ] ,
204
204
) -> std:: io:: Result < ( ) > {
@@ -213,20 +213,20 @@ pub fn encode_to_writer_unchecked<W: std::io::Write>(
213
213
#[ inline]
214
214
pub fn encode_lower_to_writer_unchecked < W : std:: io:: Write > (
215
215
w : & mut W ,
216
- hrp : & Hrp ,
216
+ hrp : Hrp ,
217
217
witness_version : Fe32 ,
218
218
witness_program : & [ u8 ] ,
219
219
) -> std:: io:: Result < ( ) > {
220
220
let iter = witness_program. iter ( ) . copied ( ) . bytes_to_fes ( ) ;
221
221
match witness_version {
222
222
VERSION_0 => {
223
- for c in iter. with_checksum :: < Bech32 > ( hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
224
- w. write_all ( & [ c as u8 ] ) ?;
223
+ for c in iter. with_checksum :: < Bech32 > ( & hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
224
+ w. write_all ( & [ c. to_ascii_lowercase ( ) as u8 ] ) ?;
225
225
}
226
226
}
227
227
version => {
228
- for c in iter. with_checksum :: < Bech32m > ( hrp) . with_witness_version ( version) . chars ( ) {
229
- w. write_all ( & [ c as u8 ] ) ?;
228
+ for c in iter. with_checksum :: < Bech32m > ( & hrp) . with_witness_version ( version) . chars ( ) {
229
+ w. write_all ( & [ c. to_ascii_lowercase ( ) as u8 ] ) ?;
230
230
}
231
231
}
232
232
}
@@ -243,19 +243,19 @@ pub fn encode_lower_to_writer_unchecked<W: std::io::Write>(
243
243
#[ inline]
244
244
pub fn encode_upper_to_writer_unchecked < W : std:: io:: Write > (
245
245
w : & mut W ,
246
- hrp : & Hrp ,
246
+ hrp : Hrp ,
247
247
witness_version : Fe32 ,
248
248
witness_program : & [ u8 ] ,
249
249
) -> std:: io:: Result < ( ) > {
250
250
let iter = witness_program. iter ( ) . copied ( ) . bytes_to_fes ( ) ;
251
251
match witness_version {
252
252
VERSION_0 => {
253
- for c in iter. with_checksum :: < Bech32 > ( hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
253
+ for c in iter. with_checksum :: < Bech32 > ( & hrp) . with_witness_version ( VERSION_0 ) . chars ( ) {
254
254
w. write_all ( & [ c. to_ascii_uppercase ( ) as u8 ] ) ?;
255
255
}
256
256
}
257
257
version => {
258
- for c in iter. with_checksum :: < Bech32m > ( hrp) . with_witness_version ( version) . chars ( ) {
258
+ for c in iter. with_checksum :: < Bech32m > ( & hrp) . with_witness_version ( version) . chars ( ) {
259
259
w. write_all ( & [ c. to_ascii_uppercase ( ) as u8 ] ) ?;
260
260
}
261
261
}
@@ -357,7 +357,7 @@ mod tests {
357
357
358
358
for address in addresses {
359
359
let ( hrp, version, program) = decode ( address) . expect ( "failed to decode valid address" ) ;
360
- let encoded = encode ( & hrp, version, & program) . expect ( "failed to encode address" ) ;
360
+ let encoded = encode ( hrp, version, & program) . expect ( "failed to encode address" ) ;
361
361
assert_eq ! ( encoded, address) ;
362
362
}
363
363
}
@@ -373,7 +373,7 @@ mod tests {
373
373
fn encode_lower_to_fmt ( ) {
374
374
let program = witness_program ( ) ;
375
375
let mut address = String :: new ( ) ;
376
- encode_to_fmt_unchecked ( & mut address, & hrp:: BC , VERSION_0 , & program)
376
+ encode_to_fmt_unchecked ( & mut address, hrp:: BC , VERSION_0 , & program)
377
377
. expect ( "failed to encode address to QR code" ) ;
378
378
379
379
let want = "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4" ;
@@ -384,7 +384,7 @@ mod tests {
384
384
fn encode_upper_to_fmt ( ) {
385
385
let program = witness_program ( ) ;
386
386
let mut address = String :: new ( ) ;
387
- encode_upper_to_fmt_unchecked ( & mut address, & hrp:: BC , VERSION_0 , & program)
387
+ encode_upper_to_fmt_unchecked ( & mut address, hrp:: BC , VERSION_0 , & program)
388
388
. expect ( "failed to encode address to QR code" ) ;
389
389
390
390
let want = "BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4" ;
@@ -396,7 +396,7 @@ mod tests {
396
396
fn encode_lower_to_writer ( ) {
397
397
let program = witness_program ( ) ;
398
398
let mut buf = Vec :: new ( ) ;
399
- encode_lower_to_writer_unchecked ( & mut buf, & hrp:: BC , VERSION_0 , & program)
399
+ encode_lower_to_writer_unchecked ( & mut buf, hrp:: BC , VERSION_0 , & program)
400
400
. expect ( "failed to encode" ) ;
401
401
402
402
let address = std:: str:: from_utf8 ( & buf) . expect ( "ascii is valid utf8" ) ;
@@ -409,7 +409,7 @@ mod tests {
409
409
fn encode_upper_to_writer ( ) {
410
410
let program = witness_program ( ) ;
411
411
let mut buf = Vec :: new ( ) ;
412
- encode_upper_to_writer_unchecked ( & mut buf, & hrp:: BC , VERSION_0 , & program)
412
+ encode_upper_to_writer_unchecked ( & mut buf, hrp:: BC , VERSION_0 , & program)
413
413
. expect ( "failed to encode" ) ;
414
414
415
415
let address = std:: str:: from_utf8 ( & buf) . expect ( "ascii is valid utf8" ) ;
@@ -423,7 +423,7 @@ mod tests {
423
423
let program = witness_program ( ) ;
424
424
let mut buf = Vec :: new ( ) ;
425
425
let hrp = Hrp :: parse_unchecked ( "BC" ) ;
426
- encode_lower_to_writer_unchecked ( & mut buf, & hrp, VERSION_0 , & program)
426
+ encode_lower_to_writer_unchecked ( & mut buf, hrp, VERSION_0 , & program)
427
427
. expect ( "failed to encode" ) ;
428
428
429
429
let address = std:: str:: from_utf8 ( & buf) . expect ( "ascii is valid utf8" ) ;
0 commit comments